当一个函数有一个后期绑定的泛型类型时,它被称为什么?

问题描述 投票:0回答:1

当一个函数有一个后期绑定的泛型类型时,它调用了什么(它只在函数被调用时确定,而不是在定义时确定)。

在下面的代码示例中显示为

LateT
,与
EarlyT
早期绑定的情况形成对比,其中函数引用本身的类型已经具有类型化约束(并且当函数调用时它不是后期绑定评估)。

我正在尝试为这种类型的函数定义找到文档并将其描述为 API 的一部分,并且我正在努力引用 Typescript 文档的正确部分而没有正确的区分术语。

type Op<EarlyT> = (item:EarlyT) => void

type LateOp = <LateT>(late:LateT) => void;
typescript function typescript-generics terminology late-binding
1个回答
0
投票

你所说的“后期绑定泛型”在 TypeScript 中被称为泛型 functioncall signature,而你所说的“早期绑定泛型”在 TypeScript 中被称为通用type.

相关文档可以在 TypeScript 手册关于泛型类型的部分找到,其中像

LateOp
这样的类型“描述了泛型函数”,而像
Op
这样的类型是“非泛型函数签名,它是一部分通用类型的。


所以在

type GenFunc = <T>(x: T) => void;

GenFunc
type 是非泛型(它没有泛型类型参数)但它指的是泛型 调用签名(它有一个泛型类型参数),而在:

type GenType<T> = (x: T) => void

GenType
type 是泛型(它有一个泛型类型参数)但它指的是一个非泛型 调用签名(它本身没有泛型类型参数,尽管来自泛型类型的类型参数仍然在范围)。


参见TypeScript how to create a generic type alias for a generic function?有关泛型函数和泛型类型之间关系的更多讨论。

© www.soinside.com 2019 - 2024. All rights reserved.