报错信息:
TS7006: Parameter 'data' 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(vite5+vue3+vant4+ts高版本中是tsconfig.app.json)当中使用 “noImplicitAny”: false 或者 “strict”: false
- 或者使用tsc命令带上以上两个参数
使用这个意味着将TS的类型检测给屏蔽了,也就是说,你写的语法还是JS语法,与TS没什么关系(无意义的行为)
文档中对这两个参数的介绍:
–noImplicitAny:在表达式和声明上有隐含的 any类型时报错。
–strict:启用所有严格类型检查选项。
TS是不鼓励使用any类型(除特殊情况),如果所有的变量,参数等都为any,那TS基本类型检查功能就等于没有使用到。
TypeScript的核心原则之一是对值所具有的结构进行类型检查。