阅读摘录
infer 推断在工具类型里的常见写法
infer 只能出现在条件类型里,作用是把某一段类型「取出来」并命名。
type ElementOf<T> = T extends (infer U)[] ? U : never;
type Unwrap<T> = T extends Promise<infer U> ? Unwrap<U> : T;
两个容易踩的点:
infer的位置决定了推断结果,写错位置会把整个类型推成unknown- 需要多个推断变量时,可以在同一个 extends 里写多个
infer