infer 关键字
- 条件类型提供了一个
infer
关键字, 可以让我们在条件类型中定义新的类型
博主假设有这么一个需求: 定义一个类型, 如果传入的是数组, 就返回数组的元素类型, 如果传入的是普通类型, 则直接返回这个类型。
传入的是数组:
type MyType<T> = T extends any[] ? T[number] : T;
type res = MyType<string[]>;
传入的是普通类型:
type MyType<T> = T extends any[] ? T[number] : T;
type res = MyType<number>;
除了如上的实现方式以外,还可以利用 infer
关键字来实现。
传入的是数组:
type MyType<T> = T extends Array<infer U> ? U : T;
type res = MyType<string[]>;
传入的是普通类型:
type MyType<T> = T extends Array<infer U> ? U : T;
type res = MyType<number>;