typeof
typeof 操作符可以得到一些变量或者属性的类型,但是更多情况下需要与别的操作符一起使用。
ReturnType 的泛型为必须为类型
type Predicate = (x: unknown) => boolean
// type 为 boolean
type K = ReturnType<Predicate>
否则,需要配合 typeof 操作符。因为,泛型参数必须是一个类型,而 f 函数是一个值。
function f(){
return {x:10, y:3}
}
type P = ReturnType<typeof f>
Indexed Access Types
通过索引寻找某一类型的特定属性的类型
type Person = {age: number; name: string; alive: boolean}
type I1 = Person[keyof Person]
number
使用number获取数组的元素,结合 typeof 获取数组元素的属性值
const MyArray = [
{name:"Alice", age: 15},
{name:"Bob", age: 23}
]
// 索引为 number ---> 理解为 MyArray[number] 拿到一个数组元素
type Person = typeof MyArray[number]
// 类型为 number
type Age = typeof Person["age"]
// 同 Age
type Age1 = typeof MyArray[number]["age"]
参考