操作符infer的作用是什么?

简介: 操作符infer的作用是什么?

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

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

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

type ReturnType<T> = 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<typeof sum>; // number

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

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

相关文章
|
5月前
|
Java C++ Python
Python 教程之运算符(3)—— G-Fact 19(布尔逻辑和位非运算符)
Python 教程之运算符(3)—— G-Fact 19(布尔逻辑和位非运算符)
37 0
|
5月前
|
JavaScript 前端开发
TypeScript 中的 infer 关键字
TypeScript 中的 infer 关键字
80 0
|
3月前
|
SQL 开发框架 前端开发
在C#开发中使用第三方组件LambdaParser、DynamicExpresso、Z.Expressions,实现动态解析/求值字符串表达式
在C#开发中使用第三方组件LambdaParser、DynamicExpresso、Z.Expressions,实现动态解析/求值字符串表达式
|
5月前
|
安全 JavaScript 前端开发
为啥加问号?可选链(Optional Chaining)的操作符
为啥加问号?可选链(Optional Chaining)的操作符
|
5月前
|
安全 JavaScript
操作符keyof的作用是什么?
操作符keyof的作用是什么?
30 0
|
5月前
|
JavaScript
操作符keyof的作用是什么?
操作符keyof的作用是什么?
|
5月前
|
JavaScript 安全
操作符keyof的作用是什么
操作符keyof的作用是什么
65 3
|
5月前
|
JavaScript
函数形状有几种定义方式;操作符infer的作用
函数形状有几种定义方式;操作符infer的作用
41 3
RxSwift操作符操作符map、flatMap、flatMapLatest、filter的使用与区别
RxSwift操作符操作符map、flatMap、flatMapLatest、filter的使用与区别
323 1