1.取值
对象取值
- 类型取值只能使用[ ]形式
- 能取联合类型、交叉类型等
interface Person {
name: string,
age: number
}
type nameType = Person['name']
type nameAndAgeType = Person['name' | 'age']
元祖取值
type tupleType = [number , string]
tupleType[0]
tupleType[0|1]
tupleType[number]
2.赋值
type Fn<A> = A extends infer B
3.条件语句
type Fn<T extends boolean> = T
type res = Fn<true>
4.循环遍历
type Fn<A, B> = Condition extends true ? Fn<C, D> : E
type Loop<List> = List extends [infer First, ...infer Rest] ?
Loop<Rest> : default
[T in keyof Object]