条件类型(Conditional Types)

6 阅读1分钟

条件类型就是“类型层的 if/else”:根据类型是否满足某个条件,返回不同的类型。

type IsString<T> = T extends string ? true : false

type A = IsString<'hi'>  // true
type B = IsString<123>   // false

常见用途:从复杂类型里“提取/转换”出你想要的类型,比如从 Promise<T> 里拿到 T

type UnwrapPromise<T> = T extends Promise<infer R> ? R : T

type X = UnwrapPromise<Promise<number>> // number

讲解extends

讲解泛型约束(<T extends ...>)到底在“约束”什么

讲解T

讲解数组里面推导