TypeScript进阶
在TypeScript中,我们可以使用泛型来创建可复用的组件,这些组件模板可以在不同类型间工作。泛型是一种创建可重用代码的强大机制,可以用于类、接口和函数。
以下是一个使用泛型的例子,它定义了一个泛型函数,该函数可以对两个元素进行比较,并返回它们的最大值:
function getMax<T>(x: T, y: T): T {
return x > y ? x : y;
}
let maxNumber = getMax<number>(5, 10);
let maxString = getMax<string>('hello', 'world');
console.log(maxNumber); // 输出: 10
console.log(maxString); // 输出: world
在这个例子中,<T>
是一个类型变量,代表了任何可能的类型。当我们调用getMax
函数时,我们可以指定T
的具体类型,比如number
或string
,函数会根据指定的类型进行比较和返回最大值。
泛型不仅仅用于函数,还可以用于类和接口。例如,我们可以创建一个泛型的栈(Stack)类,该类可以用于存储任何类型的元素:
class Stack<T> {
private items: T[] = [];
push(item: T) {
this.items.push(item);
}
pop(): T {
return this.items.pop();
}
}
let stack = new Stack<number>();
stack.push(1);
stack.push(2);
console.log(stack.pop()); // 输出: 2
let stackStr = new Stack<string>();
stackStr.push('hello');
stackStr.push('world');
console.log(stackStr.pop()); // 输出: world
在这个例子中,我们创建了一个泛型类Stack
,其中<T>
是一个类型变量。我们可以创建多个不同类型的栈,例如数字栈或字符串栈,并且可以在这些栈中存储和弹出不同类型的元素。
评论已关闭