Parameter ‘xxx’ implicitly has an ‘any’ type的解决
这句话翻译过来就是参数暗指是any类型
在TS中等同于以下代码:
const f = (param: any) => { //无意义代码 console.log(param); };
产生的原因:
在TS中如果没有定义参数类型的话就会报这个信息。
这是属于是JS的编码风格,但在TS当中,你需要给它赋上类型。
实例:
//Parameter 'param' implicitly has an 'any' type.ts(7006) const f = (param) => { //param类型可能为any console.log(param); }; *******解决方式(参考)******* //假如param为字符串类型,可以这样做 /** const f=(param: string)=>{ console.log(param); } */ //假如param为数字类型,可以这样做 /** const f=(param: number)=>{ let sum=param+100; //sum没有声明类型,是因为TS的自动类型推断,param为数字类型,加上100,那么TS就会推出sum为数字类型。 console.log(sum); } */ //假如param为XXX数组类型,可以这样做 /** const f=(param: XXX[])=>{ param.forEach((e: XXX)=>{ console.log(e) }) } */
其它解决(非常不提倡):
- 在tsconfig.json当中使用 “noImplicitAny”: false 或者 “strict”: false
- 或者使用tsc命令带上以上两个参数
使用这个意味着将TS的类型检测给屏蔽了,也就是说,你写的语法还是JS语法,与TS没什么关系(无意义的行为)
参考文档中这两个字段的解释:
–noImplicitAny:在表达式和声明上有隐含的 any类型时报错。
–strict:启用所有严格类型检查选项。
TS是不鼓励使用any类型(除特殊情况),如果所有的变量,参数等都为any,那TS基本类型检查功能就等于没有使用到
TypeScript的核心原则之一是对值所具有的结构进行类型检查。
实例:
//原生js语法 function f(param){ let stringList=param.split("-"); console.log(stringList) } f("g-s-e-g-s"); //正常调用 f(23324); //非正常调用 //js中这两个都是没有错,但在运行时,就会error //然而在TS中这会被检测出来,所以定义any类型和使用原生js的语法变化不大
如何来解决(想法):
根据参数类型对其进行特定的声明。
实例( 仅参考 ):
param是字符串数组类型:
const displayList = (param: string[]) => { param.forEach((element: string) => { console.log(element); }); }; displayList(['Hello', 'World', '!']); /** * 输出: * Hello * World * ! */
param是自定义personType的类型:
type personType = { //自定义类型 name: string; age: number; gender: string; }; const displayPersonName = (param: personType) => { console.log('姓名:', param.name); }; //参数 let person_1: personType = { name: 'personName01', age: 21, gender: '男', }; let person_2: personType = { name: 'personName02', age: 22, gender: '女', }; //调用 displayPersonName(person_1); displayPersonName(person_2); /** * 输出: * 姓名: personName01 * 姓名: personName02 */
总结
到此这篇关于TS报错:Parameter 'xxx' implicitly has an 'any' type解决的文章就介绍到这了,更多相关Parameter 'xxx' implicitly has an 'any' type内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!