在 TypeScript 中缩小泛型类型的方法有两种:类型断言和类型守卫。
例如,假设有一个泛型函数filterArray
,用于过滤数组中的元素:
function filterArray<T>(arr: T[], predicate: (item: T) => boolean): T[] {
return arr.filter(predicate);
}
如果我们想缩小泛型类型T的范围,可以使用类型断言来实现:
const numbers = [1, 2, 3, 4, 5];
const filteredNumbers = filterArray(numbers, (item) => item > 3) as number[];
在上述例子中,我们使用类型断言as number[]
将泛型类型T缩小为number[]
,以确保返回的结果是一个数字数组。
例如,假设有一个泛型函数isString
,用于判断一个值是否为字符串:
function isString<T>(value: T): value is string {
return typeof value === 'string';
}
如果我们想缩小泛型类型T的范围,可以使用类型守卫来实现:
function processValue<T>(value: T) {
if (isString(value)) {
// 在这里,value的类型被缩小为string
console.log(value.length);
} else {
// 在这里,value的类型不是string
console.log(value);
}
}
在上述例子中,通过使用类型守卫value is string
,我们可以在条件分支中缩小泛型类型T的范围,从而在不同的分支中使用不同的类型相关操作。
总结:
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云