TypeScript泛型是指在定义函数、类或接口时,不预先指定具体类型,而是在使用时通过参数传递具体类型。泛型可以用于实现类型的参数化,增加代码的灵活性和复用性。
在TypeScript中,可以使用联合类型(Union Types)和交叉类型(Intersection Types)来定义类型交集。联合类型表示一个值可以是多个类型之一,使用竖线(|)分隔。交叉类型表示一个值同时拥有多个类型的特性,使用与号(&)分隔。
联合类型的定义示例:
type NumOrStr = number | string;
function displayValue(value: NumOrStr): void {
console.log(value);
}
displayValue(123); // 输出:123
displayValue("abc"); // 输出:"abc"
在上述示例中,NumOrStr
类型可以是number
或string
。函数displayValue
接收一个NumOrStr
类型的参数,并打印该值。
交叉类型的定义示例:
interface A {
a: number;
}
interface B {
b: string;
}
type AB = A & B;
function merge(objA: A, objB: B): AB {
return { ...objA, ...objB };
}
const result = merge({ a: 123 }, { b: "abc" });
console.log(result); // 输出:{ a: 123, b: "abc" }
在上述示例中,AB
类型是A
和B
两个接口类型的交叉类型。函数merge
接收一个A
类型的对象和一个B
类型的对象,返回一个AB
类型的对象,该对象拥有A
和B
两个接口的属性。
对于TypeScript泛型,可以在定义函数、类或接口时使用泛型参数,以表示参数类型的占位符。例如,定义一个泛型函数来获取数组的第一个元素:
function getFirstElement<T>(arr: T[]): T | undefined {
return arr.length > 0 ? arr[0] : undefined;
}
const arr = [1, 2, 3];
const firstElement = getFirstElement(arr);
console.log(firstElement); // 输出:1
在上述示例中,getFirstElement
函数使用了泛型参数T
,表示数组的元素类型。通过传递具体的数组参数arr
,可以根据传入的数组类型推断出T
的具体类型。
推荐的腾讯云相关产品和产品介绍链接地址:
请注意,上述推荐的腾讯云产品仅作为示例,不代表其他云计算品牌商不存在类似的产品或服务。
领取专属 10元无门槛券
手把手带您无忧上云