在 TypeScript 中,为了避免函数重载错误,可以使用泛型和联合类型来定义过滤函数的类型。以下是一个示例,展示了如何编写一个通用的过滤函数类型,该函数可以接受不同类型的数组并返回相应类型的数组。
// 定义一个通用的过滤函数类型
type FilterFunction<T> = (array: T[], predicate: (item: T) => boolean) => T[];
// 实现过滤函数
const filter: FilterFunction<any> = (array, predicate) => {
return array.filter(predicate);
};
// 使用示例
const numbers = [1, 2, 3, 4, 5];
const isEven = (num: number) => num % 2 === 0;
const evenNumbers = filter(numbers, isEven); // 类型推断为 number[]
const strings = ["apple", "banana", "cherry"];
const isLongString = (str: string) => str.length > 5;
const longStrings = filter(strings, isLongString); // 类型推断为 string[]
问题:类型推断不准确,导致编译错误或运行时错误。
解决方法:
filter<number>(numbers, isEven)
。FilterFunction<T extends SomeBaseType>
。通过上述方法,可以有效避免 TypeScript 中因函数重载导致的类型错误,同时提升代码的灵活性和可维护性。
领取专属 10元无门槛券
手把手带您无忧上云