2. 类使用泛型:
(1). 实现一个队列:
class Queue {
private data = [];
push(item) {
return this.data.push(item);
}
pop() {
return this.data.shift();
}
}
const queue = new Queue();
queue.push(1);
queue.push('str');
console.log(queue.pop().toFixed());
console.log(queue.pop().toFixed()); // 在运行时会报错,因为str没有toFixed方法
(2). 改进:
class Queue {
private data = [];
push(item: number) {
return this.data.push(item);
}
pop(): number {
return this.data.shift();
}
}
const queue = new Queue();
queue.push(1);
queue.push('str'); // 这里会报错,但是如果想创建一个字符串的对列呢?
console.log(queue.pop().toFixed());
console.log(queue.pop().toFixed());
(3). 如何使推入队列的类型与推出队列的类型一致,创建一个泛型类:
class Queue<T> {
private data = [];
push(item: T) {
return this.data.push(item);
}
pop(): T {
return this.data.shift();
}
}
const queue = new Queue<number>();
queue.push(1);
console.log(queue.pop().toFixed());
const queue2 = new Queue<string>();
queue2.push('str');
console.log(queue2.pop().length);