JS转TypeScript时,如何解决filter普通函数的隐式any类型错误?
解决TypeScript中filter回调参数隐式any类型错误
问题分析
你遇到的Binding element 'item' implicitly has an 'any' type.ts(7031)错误,是因为开启noImplicitAny的TypeScript配置下,未显式声明类型的参数会被标记为错误。你尝试的return item: number > 300是语法错误——TypeScript的类型注解必须放在变量/参数的声明位置,不能写在表达式里。
解决方案
给filter回调函数的参数item显式添加number类型注解即可,无需使用箭头函数:
let numbers: number[] = [123, 234, 345, 456, 567]; let names: string[] = ['Alex', 'Bree', 'Cara', 'Cole', 'Devon', 'Riley']; // 给回调函数的item参数添加number类型注解 let big: number[] = numbers.filter(function(item: number) { return item > 300; });
额外说明
- 注意修正原代码中的语法错误:原函数定义里的
function(item))多了一个右括号,需删除。 - 虽然
numbers已标注为number[],TypeScript理论上能自动推断filter回调参数的类型,但在严格模式下,显式声明类型能让代码更清晰,同时避免隐式any的报错。
内容的提问来源于stack exchange,提问作者elvis
相关产品推荐
相关产品推荐

