在Typescript中编写过滤函数的类型,避免重载错误可以通过使用函数重载和泛型来实现。下面是一个示例:
// 定义一个过滤函数的重载
function filter<T>(arr: T[], callback: (value: T, index: number, array: T[]) => boolean): T[];
function filter<T>(arr: T[], callback: (value: T) => boolean): T[];
// 实现过滤函数
function filter<T>(arr: T[], callback: (value: T, index?: number, array?: T[]) => boolean): T[] {
const result: T[] = [];
for (let i = 0; i < arr.length; i++) {
if (callback(arr[i], i, arr)) {
result.push(arr[i]);
}
}
return result;
}
// 使用过滤函数
const numbers = [1, 2, 3, 4, 5];
const evenNumbers = filter(numbers, (num) => num % 2 === 0);
console.log(evenNumbers); // 输出 [2, 4]
在上面的示例中,我们使用了函数重载来定义两种不同的回调函数类型。第一个重载接受一个回调函数,该回调函数接受三个参数:值、索引和数组,并返回一个布尔值。第二个重载接受一个回调函数,该回调函数只接受一个参数:值,并返回一个布尔值。
然后,我们实现了过滤函数,它接受一个数组和一个回调函数,并根据回调函数的返回值来过滤数组。在实现中,我们使用了泛型来保持函数的灵活性,可以适用于不同类型的数组。
最后,我们使用过滤函数来过滤一个数字数组,只保留偶数。输出结果为 [2, 4]
。
推荐的腾讯云相关产品和产品介绍链接地址:
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云