我无法理解TypeScript文档中的以下段落:
“泛型函数的类型与非泛型函数的类型一样,首先列出类型参数,类似于函数声明:”
function identity<T>(arg: T): T {
return arg;
}
let myIdentity: <T>(arg: T) => T = identity;
最后一行做了什么以及为什么使用它?
据我所知,myIdentity是一个获取身份函数类型的变量?如果是这种情况,为什么我需要定义这样的变量?函数标识已经声明了我可以期待的返回类型。
答案 0 :(得分:4)
最后一行声明了一个名为myIdentity
的变量。变量是一个函数类型,一个泛型函数(<T>
使它成为泛型函数的签名,更多类型参数可以在列表中),它接受类型T
的参数并返回值T
的值。然后使用identity
函数初始化变量,该函数符合myIdentity的声明签名。
您可能希望这样做,以便根据运行时条件为myIdentity
分配不同的函数。或者声明这种类型的参数并将其传递给稍后可以调用它的函数。
答案 1 :(得分:4)
让我们说从编译器的角度来看,显式类型声明是没有必要的 因为类型推断。
let myIdentity: <T>(arg: T) => T = identity;
相当于
let myIdentity = identity
然而,从人的角度来看,它可用于提高代码的可读性。