1. 基本泛型语法:
使用 <T> 表示泛型,其中 T 是类型参数,可以是任何标识符。
function identity<T>(arg: T): T {
return arg;
}
let result1: number = identity(1);
let result2: string = identity("hello");
2. 泛型函数:
在函数内使用泛型类型参数,可以使函数接受不同类型的参数。
function pair<T, U>(first: T, second: U): [T, U] {
return [first, second];
}
let stringAndNumber = pair("one", 1);
let booleanAndString = pair(true, "yes");
3. 泛型类:
类也可以使用泛型类型参数,使类中的属性和方法具有泛型性。
class Box<T> {
value: T;
constructor(value: T) {
this.value = value;
}
}
let numberBox = new Box<number>(42);
let stringBox = new Box<string>("hello");
4. 泛型接口:
接口可以使用泛型来定义泛型类型。
interface Pair<T, U> {
first: T;
second: U;
}
let pair1: Pair<number, string> = { first: 1, second: "two" };
let pair2: Pair<boolean, number> = { first: true, second: 42 };
5. 泛型约束:
可以使用泛型约束来限制泛型类型参数的类型。
interface Lengthwise {
length: number;
}
function logLength<T extends Lengthwise>(arg: T): void {
console.log(arg.length);
}
logLength("hello");
logLength([1, 2, 3]);
// logLength(42); // 错误,number 没有 length 属性
6. 泛型在类中的应用:
在类中使用泛型可以提高类的复用性。
class Pair<T> {
first: T;
second: T;
constructor(first: T, second: T) {
this.first = first;
this.second = second;
}
}
let numberPair = new Pair<number>(1, 2);
let stringPair = new Pair<string>("hello", "world");
这些是 TypeScript 中泛型的一些基本概念和用法。泛型是一种强大的工具,可以使你编写更加通用和灵活的代码,从而提高代码的可维护性和可复用性。
转载请注明出处:http://www.zyzy.cn/article/detail/4698/TypeScript