请解释 TypeScript 中的推断类型 (Infer) 的概念和用法。如何在条件类型中使用 infer 关键字推断类型?

推荐答案

在 TypeScript 中,infer 关键字用于在条件类型中推断类型。它允许你在条件类型中声明一个类型变量,并在条件满足时推断出该类型变量的具体类型。infer 通常与条件类型结合使用,用于从复杂类型中提取出某个部分的类型。

示例代码

在这个示例中,ExtractReturnType 是一个条件类型,它检查 T 是否是一个函数类型。如果是,则使用 infer R 推断出函数的返回类型 R,并将其作为结果类型;否则返回 never

本题详细解读

1. infer 关键字的作用

infer 关键字用于在条件类型中声明一个类型变量,并在条件满足时推断出该类型变量的具体类型。它通常用于从复杂类型中提取出某个部分的类型。

2. 条件类型中的 infer

条件类型的语法为 T extends U ? X : Y,其中 T 是待检查的类型,U 是目标类型,XY 分别是条件为真和假时的结果类型。infer 关键字可以在 U 中使用,用于声明一个类型变量,并在条件为真时推断出该类型变量的具体类型。

3. 使用 infer 提取函数返回类型

在这个例子中,ExtractReturnType 是一个条件类型,它检查 T 是否是一个函数类型。如果是,则使用 infer R 推断出函数的返回类型 R,并将其作为结果类型;否则返回 never

4. 使用 infer 提取数组元素类型

在这个例子中,ExtractElementType 是一个条件类型,它检查 T 是否是一个数组类型。如果是,则使用 infer U 推断出数组元素的类型 U,并将其作为结果类型;否则返回 never

5. 使用 infer 提取 Promise 的解析类型

在这个例子中,ExtractPromiseType 是一个条件类型,它检查 T 是否是一个 Promise 类型。如果是,则使用 infer U 推断出 Promise 解析后的类型 U,并将其作为结果类型;否则返回 never

6. 总结

infer 关键字在条件类型中非常有用,它允许你从复杂类型中提取出某个部分的类型。通过结合条件类型和 infer,你可以编写出更加灵活和强大的类型工具。

纠错
反馈