TypeScript通用函数的类型

时间:2018-01-24 14:42:34

标签: typescript generics

我无法理解TypeScript文档中的以下段落:

“泛型函数的类型与非泛型函数的类型一样,首先列出类型参数,类似于函数声明:”

function identity<T>(arg: T): T {
    return arg;
}

let myIdentity: <T>(arg: T) => T = identity;

最后一行做了什么以及为什么使用它?

据我所知,myIdentity是一个获取身份函数类型的变量?如果是这种情况,为什么我需要定义这样的变量?函数标识已经声明了我可以期待的返回类型。

2 个答案:

答案 0 :(得分:4)

最后一行声明了一个名为myIdentity的变量。变量是一个函数类型,一个泛型函数(<T>使它成为泛型函数的签名,更多类型参数可以在列表中),它接受类型T的参数并返回值T的值。然后使用identity函数初始化变量,该函数符合myIdentity的声明签名。

您可能希望这样做,以便根据运行时条件为myIdentity分配不同的函数。或者声明这种类型的参数并将其传递给稍后可以调用它的函数。

答案 1 :(得分:4)

让我们说从编译器的角度来看,显式类型声明是没有必要的 因为类型推断。

let myIdentity: <T>(arg: T) => T = identity;

相当于

let myIdentity = identity

然而,从人的角度来看,它可用于提高代码的可读性。