typescript中的泛型
文章类型:TypeScript
发布者:admin
发布时间:2023-05-16
一:定义
1::允许我们在定义函数、类或接口时使用一个占位符类型,以便在使用时指定具体的类型参数。
2::使得代码更加灵活和可重用,可以增强类型的安全性和代码的可读性
二:常用
1:函数:使用了一个泛型类型参数 T,表示传入参数的类型和返回值的类型。通过指定类型参数或使用类型推断,可以使用这个函数并保持类型安全
function identity<T>(arg: T): T {
return arg;
}
let result = identity<string>("Hello"); // 指定泛型类型为 string
console.log(result); // 输出: "Hello"
let anotherResult = identity(42); // 类型推断,泛型类型为 number
console.log(anotherResult); // 输出: 42
2:类:使用了一个泛型类型参数 T,表示存储的值的类型。通过指定类型参数,我们可以创建不同类型的实例,并保持类型安全
class Box<T> {
private value: T;
constructor(value: T) {
this.value = value;
}
getValue(): T {
return this.value;
}
}
let box = new Box<number>(42); // 指定泛型类型为 number
console.log(box.getValue()); // 输出: 42
let anotherBox = new Box<string>("Hello"); // 指定泛型类型为 string
console.log(anotherBox.getValue()); // 输出: "Hello"
3:接口:使用了两个泛型类型参数 T 和 U,表示了接口中两个属性的类型。通过指定类型参数,可以创建符合接口定义的对象,并保持类型安全
interface Pair<T, U> {
first: T;
second: U;
}
let pair: Pair<number, string> = { first: 42, second: "Hello" };
console.log(pair.first); // 输出: 42
console.log(pair.second); // 输出: "Hello"
三:总结
1:使用泛型,我们可以编写更通用、更健壮的代码,同时提供更好的类型检查和推断
2:增加代码的灵活性和可重用性