- keyof 是一个单目运算符,接受一个对象类型作为参数,返回该对象的所有键名组成的联合类型
示例1:
type IObject = {
name: string,
id: number,
}
type keys = keyof IObject
示例2:
interface IObject {
name: string
id: number
}
type keys = keyof IObject
如果对象属性名采用索引形式,keyof 会返回属性名的索引类型。
示例1:
interface IPropertyType {
[key: string]: number
}
type keys = keyof IPropertyType
对于联合类型,keyof 返回成员共有的键名
示例:
type A = {
a: string,
z: string,
}
type B = {
b: string,
z: string,
}
type keys = keyof (A | B)
对于交叉类型,keyof 返回所有键名
type keys = keyof (A & B)
- in 运算符
用于取出(遍历)联合类型中所有值
type A = 'a' | 'b' | 'c'
type B = {
[key in A]: number,
}
// 等价于
type B = {
a: number,
b: number,
c: number,
}
- 方括号运算符( [] )
方括号运算符([])用于取出对象的键值类型,比如T[K]会返回对象T的属性K的类型。
type Person = {
age: number
name: string
alive: boolean
}
// Age 的类型是 number
type Age = Person['age']