Ts官方文档翻译-Generic范型
在TypeScript中,我们可以创建可以使用类型参数的泛型函数或类。这些参数可以在类或函数定义时未知,但可以在使用时提供。
泛型函数:
function identity<T>(arg: T): T {
return arg;
}
let output = identity<string>("myString"); // output: string
let output2 = identity("myString"); // 类型推断
泛型类:
class GenericNumber<T> {
zeroValue: T;
add: (x: T, y: T) => T;
}
let myGenericNumber = new GenericNumber<number>();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function(x, y) { return x + y; };
泛型接口:
interface GenericInterface<T> {
id: T;
name: string;
}
let myGenericInterface: GenericInterface<number> = {
id: 1,
name: "Name"
};
泛型约束:
interface Lengthwise {
length: number;
}
function loggingIdentity<T extends Lengthwise>(arg: T): T {
console.log(arg.length); // Now we know it has a .length property, so no error
return arg;
}
泛型默认类型:
function createArray<T = string>(length: number, value: T): Array<T> {
let result: T[] = [];
for (let i = 0; i < length; i++) {
result[i] = value;
}
return result;
}
createArray(3, 'a'); // ['a', 'a', 'a']
泛型是TypeScript的一个强大特性,可以提高代码的可复用性和类型安全性。
评论已关闭