——泛型是一种类型变量,只用于表示类型而不是值。用于让用户传入类型。
function identity<T>(arg: T): T { return arg; }
可以用两种方式使用:
let output = identity<string>("myString"); // type of output will be 'string' //这里我们明确的指定了T是string类型,并做为一个参数传给函数,使用了<>括起来而不是()。 //第二种方法更普遍。利用了类型推论 -- 即编译器会根据传入的参数自动地帮助我们确定T的类型: let output = identity("myString"); // type of output will be 'string'
一、泛型变量
在函数体中使用泛型变量要注意到:你必须把这些参数当做是任意或所有类型。——也就是说,只能使用所有类型都可用的操作
function loggingIdentity<T>(arg: T): T { // 使用这个函数的人可能传入的是个数字,而数字是没有 .length
属性的
console.log(arg.length); // Error: T doesn't have .length
return arg;
}
假设传入的时数组,就可以这样操作:
function loggingIdentity<T>(arg: Array<T>): Array<T> { console.log(arg.length); // Array has a .length, so no more error return arg; }