You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript报错TS2769:自定义filter函数类型不匹配求助

问题分析与修复

错误原因

你编写的xcFilter函数中,reduce的初始值[]未明确类型,TypeScript无法正确推断累加器a的类型应为T[],导致类型匹配错误——它误将累加器类型判定为T,而你返回的是T[],因此抛出Type 'T[]' is not assignable to type 'T'这类类型不兼容报错。

修复方案

给reduce的初始值添加明确的类型注解,让TypeScript明确累加器是T类型的数组:

const xcFilter = <T>(items: T[], filterFn: (item: T) => boolean): T[] =>
    items.reduce((a, v) => filterFn(v) ? [...a, v] : a, [] as T[])

另一种方式是显式指定reduce的泛型参数,直接声明累加器的类型:

const xcFilter = <T>(items: T[], filterFn: (item: T) => boolean): T[] =>
    items.reduce<T[]>((a, v) => filterFn(v) ? [...a, v] : a, [])

验证调用

修复后,调用筛选偶数的代码可正常运行:

xcFilter([1, 2, 3, 4, 5, 6, 7, 8], (v) => v % 2 === 0)
// 返回结果:[2, 4, 6, 8],类型完全匹配

内容的提问来源于stack exchange,提问作者Siddhartha Ghosal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 08:27:08