TypeScript-infer关键字

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>;
posted @ 2021-12-05 13:54  BNTang  阅读(131)  评论(0编辑  收藏  举报