上一篇:第一階段.模塊二:學(xué)習(xí)筆記-TypeSrcipt的高階特性一
沒有完成,還在完成中.......
ts 中的高階類型(2)
1-this 類型
2-索引類型
2-1 索引類型查詢操作符-->keyof
keyof 連接的是一個類型,返回一個由這個類型所有屬性名組成的聯(lián)合類型
interface info {
name: string
age: number
}
// 定義變量,變量類型是上面的接口類型
let myest: keyof info //變量類型let myest: "name" | "age"
// 為變量賦值
myest = 'name'
myest = 'age'
myest = 'sex'// 不能將類型“"sex"”分配給類型“"name" | "age"”稚字。
2-2 索引訪問操作符--> []
interface info {
name: string
age: number
}
// 定義變量,變量類型是上面的接口類型的name屬性對應(yīng)的類型
let myest: info['name'] // 類型是:let myest: "name" | "age"
myest = '1232'
myest = '456'
myest = 16 // 不能將類型“16”分配給類型“string”绿语。
3-映射類型
3-1 基礎(chǔ)
借助舊類型創(chuàng)建新類型
ts 內(nèi)置的映射類型:Partial 是可選類型凄诞、Readonly 是只讀類型
ts 內(nèi)置的映射類型:Pick 是返回對象中的一部分?jǐn)?shù)據(jù)荒吏、Rexord 是把對象中的每一個值變成其他值
Rexord 不是同態(tài)的 Partial撤蟆、是可選類型、Readonly Pick 是同態(tài)的
interface Qwd {
age: number
name: string
sex: string
}
// 定義映射類型
type ReadonlyType<T> = {
readonly [P in keyof T]: T[P] // 和for... in 類似 T是數(shù)組 P是里面的每一項item
}
// 定義一個新的類型
type ReadonlyTypeInfo1 = ReadonlyType<Qwd>
// 使用新的類型
let typeInfo11: ReadonlyTypeInfo1 = {
age: 18,
name: '小明',
sex: '男'
// sex:0 // 不能將類型“number”分配給類型“string”
}
// typeInfo11.age = 20 // Cannot assign to 'age' because it is a read-only property.
3-2 由映射類型進(jìn)行推斷
3-3 增加或移出特定修飾符--> + 或者 -
3-4keyof 和 映射類型在 2.9 的升級
3-5 元組和數(shù)組上的映射類型-->生成新的元組和數(shù)組
4-條件類型
4-1 基礎(chǔ)
4-2 分布式條件類型
4-3 條件類型的類型推斷-infer
4-4 TS 預(yù)定義條件類型