TS報(bào)錯(cuò):Parameter?'xxx'?implicitly?has?an?'any'?type的解決方式
Parameter ‘xxx’ implicitly has an ‘any’ type的解決
這句話翻譯過(guò)來(lái)就是參數(shù)暗指是any類型
在TS中等同于以下代碼:
const f = (param: any) => { //無(wú)意義代碼
console.log(param);
};
產(chǎn)生的原因:
在TS中如果沒(méi)有定義參數(shù)類型的話就會(huì)報(bào)這個(gè)信息。
這是屬于是JS的編碼風(fēng)格,但在TS當(dāng)中,你需要給它賦上類型。
實(shí)例:
//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為數(shù)字類型,可以這樣做
/**
const f=(param: number)=>{
let sum=param+100; //sum沒(méi)有聲明類型,是因?yàn)門(mén)S的自動(dòng)類型推斷,param為數(shù)字類型,加上100,那么TS就會(huì)推出sum為數(shù)字類型。
console.log(sum);
}
*/
//假如param為XXX數(shù)組類型,可以這樣做
/**
const f=(param: XXX[])=>{
param.forEach((e: XXX)=>{
console.log(e)
})
}
*/其它解決(非常不提倡):
- 在tsconfig.json當(dāng)中使用 “noImplicitAny”: false 或者 “strict”: false
- 或者使用tsc命令帶上以上兩個(gè)參數(shù)
使用這個(gè)意味著將TS的類型檢測(cè)給屏蔽了,也就是說(shuō),你寫(xiě)的語(yǔ)法還是JS語(yǔ)法,與TS沒(méi)什么關(guān)系(無(wú)意義的行為)
參考文檔中這兩個(gè)字段的解釋:
–noImplicitAny:在表達(dá)式和聲明上有隱含的 any類型時(shí)報(bào)錯(cuò)。
–strict:?jiǎn)⒂盟袊?yán)格類型檢查選項(xiàng)。
TS是不鼓勵(lì)使用any類型(除特殊情況),如果所有的變量,參數(shù)等都為any,那TS基本類型檢查功能就等于沒(méi)有使用到
TypeScript的核心原則之一是對(duì)值所具有的結(jié)構(gòu)進(jìn)行類型檢查。
實(shí)例:
//原生js語(yǔ)法
function f(param){
let stringList=param.split("-");
console.log(stringList)
}
f("g-s-e-g-s"); //正常調(diào)用
f(23324); //非正常調(diào)用
//js中這兩個(gè)都是沒(méi)有錯(cuò),但在運(yùn)行時(shí),就會(huì)error
//然而在TS中這會(huì)被檢測(cè)出來(lái),所以定義any類型和使用原生js的語(yǔ)法變化不大如何來(lái)解決(想法):
根據(jù)參數(shù)類型對(duì)其進(jìn)行特定的聲明。
實(shí)例( 僅參考 ):
param是字符串?dāng)?shù)組類型:
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);
};
//參數(shù)
let person_1: personType = {
name: 'personName01',
age: 21,
gender: '男',
};
let person_2: personType = {
name: 'personName02',
age: 22,
gender: '女',
};
//調(diào)用
displayPersonName(person_1);
displayPersonName(person_2);
/**
* 輸出:
* 姓名: personName01
* 姓名: personName02
*/
總結(jié)
到此這篇關(guān)于TS報(bào)錯(cuò):Parameter 'xxx' implicitly has an 'any' type解決的文章就介紹到這了,更多相關(guān)Parameter 'xxx' implicitly has an 'any' type內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Javascript如何通過(guò)async/await優(yōu)雅地使用FileReader
這篇文章主要為大家詳細(xì)介紹了Javascript和Typescript如何通過(guò)async/await優(yōu)雅地使用FileReader,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
JS中innerHTML和pasteHTML的區(qū)別實(shí)例分析
這篇文章主要介紹了JS中innerHTML和pasteHTML的區(qū)別,結(jié)合實(shí)例形式較為詳細(xì)的分析了innerHTML和pasteHTML的具體功能與使用區(qū)別,需要的朋友可以參考下2016-06-06
前端echarts加標(biāo)記點(diǎn)及標(biāo)記線和提示框詳細(xì)代碼示例
ECharts中的標(biāo)記線是一條平行于x軸的水平線,有最大值、最小值、平均值等數(shù)據(jù)的標(biāo)記線,它也是在series字段下進(jìn)行配置的,下面這篇文章主要給大家介紹了關(guān)于前端echarts加標(biāo)記點(diǎn)及標(biāo)記線和提示框的相關(guān)資料,需要的朋友可以參考下2024-06-06
Javascript 中的 call 和 apply使用介紹
JavaScript 中通過(guò)call或者apply用來(lái)代替另一個(gè)對(duì)象調(diào)用一個(gè)方法,將一個(gè)函數(shù)的對(duì)象上下文從初始的上下文改變?yōu)橛?thisObj 指定的新對(duì)象2012-02-02
layui框架table 數(shù)據(jù)表格的方法級(jí)渲染詳解
今天小編就為大家分享一篇layui框架table 數(shù)據(jù)表格的方法級(jí)渲染詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08

