泛型
泛型是一种在编程过程中使用的技术,它允许我们在定义函数、类或接口时使用参数化类型,以增加代码的灵活性和复用性。
在 typescript 中,可以使用泛型来使函数或类的参数或返回值具有更通用的类型。
- 使用泛型变量:
function identity<T>(arg: T): T {
return arg;
}
let output = identity<number>(5) // 指定泛型参数为number 5
console.log(output) // 输出 5
let output2 = identity<string>('hello') // 指定泛型参数为 string 类型
console.log(output2) // 输出 hello
- 泛型类:
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())
- 泛型在接口中的应用
interface KeyPair<T, U> {
key: T
value: U
}
let kp1: KeyPair<number, string> = {key: 1, value: 'hello'};
let kp2: KeyPair<string, number> = {key: 'hello', value: 1}
let arr: number[] = [1, 3, 4]
let arr2: Array<number> = [1, 3, 4]
类型别名(type aliase)
let sum: (x: number, y: number) => number
const result = sum(1, 2);
type PlusType = (x: number, y: number) => number;
let sum2: PlusType;
const result2 = sum2(2, 3);
泛型约束
interface Lengthwise {
length: number;
}
function loggingIdentity<T extends Lengthwise>(arg: T) {
console.log(arg.length)
return arr;
}