Skip to content

infer 关键字是什么?

Posted on:2024年9月5日 at 01:20

在 TypeScript 中,infer 关键字用于在条件类型中推断类型。它允许你在条件类型中声明一个类型变量并推断它的类型,通常用来提取或推断复杂类型的内部结构。

使用 infer 关键字

infer 关键字只能在条件类型中使用,并用于声明一个局部的类型变量,该变量的类型由条件类型的条件部分推断得出。它主要用于提取和操作类型的内部细节。

基本语法

type ConditionalType<T> = T extends SomeType<infer U> ? U : FallbackType;

示例

示例 1:推断数组的元素类型

type ElementType<T> = T extends (infer U)[] ? U : never;

type NumberArray = ElementType<number[]>; // number
type StringArray = ElementType<string[]>; // string
type NotArray = ElementType<number>; // never

在这个例子中:

示例 2:推断函数的返回类型

type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;

type Func = () => string;
type Result = ReturnType<Func>; // string

在这个例子中:

示例 3:推断 Promise 的解析类型

type PromiseType<T> = T extends Promise<infer U> ? U : never;

type StringPromise = PromiseType<Promise<string>>; // string
type NumberPromise = PromiseType<Promise<number>>; // number
type NotPromise = PromiseType<number>; // never

在这个例子中:

原文转自:https://fe.ecool.fun/topic/ea84f54a-0aec-444f-b417-2887cb4f0199