TypeScript学习之泛型
泛型的定义
TypeScript中泛型的定义:在定义函数时,不决定函数的参数类型,而是让调用者以参数的形式告知,函数的参数应该是什么样的类型。
使用泛型之前,我们写函数的类型,是这样的:
function identity(arg: any): any {
return arg;
}
(1)函数的指定类型
function identity(arg: number): number {
return arg;
}
缺点:指定了是哪种类型,最后输出的是哪种类型,不能发生改变
(2)函数的任意类型
function identity(arg: any): any {
return arg;
}
缺点:虽然可以是任意的类型,但是最后输出看不到是哪种类型
(3)泛型
function identity<Type>(arg: Type): Type {
return arg
}
优点:可以捕获输入者传入的类型,并且最后输出能看到是哪种类型 这里的Type允许我们捕获调用者提供的类型,使得接下来可以使用这个类型。
我们有两种方式调用上边的泛型函数:
(1)传入所有的参数(包括类型参数)
let output = identity("myString"); // output: string
(2)使用类型推导
let output = identity("myString"); // let output: string