TS報錯:Parameter 'xxx' implicitly has an 'any' type的解決方式

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內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: