📅  最后修改于: 2023-12-03 14:51:40.864000             🧑  作者: Mango
在 TypeScript 中,泛型是一种强大的工具,可用于创建具有多种类型的打字稿。泛型允许我们编写可重用的代码,能够适应不同类型的数据和变量。
泛型函数是一种可以处理多种类型的函数。通过在函数定义时使用泛型参数,我们可以使函数接受并处理不同类型的参数。
function printArray<T>(arr: T[]): void {
for (let ele of arr) {
console.log(ele);
}
}
// 使用泛型函数打印数组
let numbers = [1, 2, 3, 4, 5];
printArray(numbers);
let names = ["Alice", "Bob", "Charlie"];
printArray(names);
在上面的示例中,printArray
函数是一个泛型函数,它接受一个数组参数 arr
,该数组可以包含不同类型的元素。通过使用泛型参数 <T>
,我们可以在编译时动态确定数组元素的类型,并进行相应的操作。
和泛型函数一样,泛型类也可以处理多种类型的数据。通过将泛型参数用作类属性或方法的类型,我们可以创建通用的类。
class Stack<T> {
private items: T[] = [];
push(item: T): void {
this.items.push(item);
}
pop(): T | undefined {
return this.items.pop();
}
}
// 使用泛型类创建不同类型的堆栈
let numberStack = new Stack<number>();
numberStack.push(1);
numberStack.push(2);
numberStack.push(3);
console.log(numberStack.pop()); // 输出 3
let stringStack = new Stack<string>();
stringStack.push("Hello");
stringStack.push("World");
console.log(stringStack.pop()); // 输出 "World"
上面的示例展示了使用泛型类创建堆栈的方式。通过将堆栈数据的类型作为泛型参数 <T>
,我们可以创建具有不同类型的堆栈,并在添加和弹出元素时保持类型安全。
泛型接口允许我们定义可以适应多种类型的接口。通过在接口定义时使用泛型参数,我们可以在实现接口时指定具体的类型。
interface Pair<T, U> {
first: T;
second: U;
}
// 使用泛型接口创建不同类型的键值对
let numberPair: Pair<number, string> = {
first: 1,
second: "one"
};
let stringPair: Pair<string, boolean> = {
first: "isTrue",
second: true
};
在上面的示例中,Pair
是一个泛型接口,它具有 first
和 second
两个属性,可以分别指定不同的数据类型。通过在使用接口时指定泛型参数的具体类型,我们可以创建不同类型的键值对。
通过使用泛型,我们可以在 TypeScript 中处理多种类型的数据和变量。泛型函数、泛型类和泛型接口都是强大的工具,可以帮助我们编写灵活、可重用的代码。无论是处理数组、数据结构还是通用的数据类型,泛型都是 TypeScript 程序员必备的技巧之一。
以上是关于多种类型的打字稿泛型 - TypeScript 的介绍。希望本文能帮助你更好地理解和应用 TypeScript 中的泛型概念。
(以上内容已经按照 markdown 格式进行标注。)