keyof and typeof
# keyof
它用来遍历和提取类型系统中的 key 值,并返回一个用字面量类型组合成的新类型。
举个 🌰
interface Person {
name: string
age: number
sex: string
}
// 获取 Person 类型中的 key 的联合字面量类型
type PersonProperty = keyof Person
// 等价于
type PersonProperty = 'name' | 'age' | 'sex'
type PersonUnion = Person[keyof Person]
// 等价于
type PersonUnion = string | number
# typeof
当我们有一个对象实例,但是没有这个对象的 interface
时,可以通过 typeof
定义一个。
举个 🌰
const Me = {
name: 'Allen',
age: 18,
sex: 'male',
}
type Person = typeof Me
// 等价于
interface Person {
name: string
age: number
sex: string
}
如果是一个数组呢?
const cat = ['kitty', 2, 12, true]
type Cat = typeof cat
// 等价于
type Cat = (string | number | boolean)[]
# 参考
Last Updated: 3/30/2022, 1:20:25 AM