操作符infer的作用是什么?

在 TypeScript 中,infer 关键字用于推断类型变量。它通常与条件类型(Conditional Types)一起使用,用于从条件类型中提取并推断出类型。

条件类型是一种非常强大的类型操作工具,可以根据给定的条件选择不同的类型。而 infer 关键字允许我们在条件类型中引入新的类型变量,并对其进行推断。

以下是一个示例来说明 infer 的作用:

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

在这个示例中,我们定义了一个条件类型 ReturnType,它接受一个函数类型 T 作为输入参数。通过 T extends (...args: any[]) => infer R 这一条件判断,我们在条件类型中引入了一个新的类型变量 R,并使用 infer 关键字进行推断。

T extends (...args: any[]) => infer R 表示如果 T 是一个函数类型,那么就将其返回值类型推断为 R 类型。否则,返回 any 类型作为默认类型。

通过这个条件类型,我们可以实现一个工具类型,用于获取函数的返回值类型:

function sum(a: number, b: number): number {
  return a + b;
}

type Result = ReturnType; // number

在这个例子中,我们使用 ReturnType 来获取函数 sum 的返回值类型。由于 sum 是一个函数类型,因此 ReturnType 条件类型中的 infer R 将会推断为 number 类型,最终得到 Result 类型为 number

总之,infer 关键字在 TypeScript 的条件类型中扮演着重要的角色,用于推断类型变量,并根据推断结果进行类型操作和转换。它使得我们可以编写更加灵活和可复用的类型工具。

你可能感兴趣的:(typescript,前端,javascript)