亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

類型推斷有多可靠?

類型推斷有多可靠?

蝴蝶不菲 2022-06-16 16:52:57
我剛開始撿起typescript來遇到了type inference?,F在根據教練的說法,初始化變量不是最佳做法,type而是依賴type inference但我立即犯了這個錯誤,如下所示function add(n1: number, n2: number, showResult: boolean, phrase: string) {  const result = n1 + n2;  if (showResult) {    console.log(phrase + result);  }  return result;}let number1;number1 = '5';const number2 = 2.8;add(number1, number2, printResult, resultPhrase);從上面的代碼片段中,很明顯它string通過類型檢查漏掉了,因此,如果我們不依賴type inference而是顯式設置類型會更好嗎?比如下面let number1: number;number1 = '5';我們立即從上面的代碼中得到錯誤。下圖是不信任的證明type inference。
查看完整描述

1 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

number1類型為any,因為在聲明它時沒有分配任何內容。不幸的是,它可以分配給任何東西——這any就是為什么強烈建議不要使用它。和

function add(n1: number,

如果您調用add傳遞的第一個參數是 type any,它將編譯。

在聲明變量后為變量分配另一個值不會更改類型 - Typescript 仍將其類型視為any.

為了避免犯這些錯誤,請確保noImplicitAny在您的 tsconfig 中啟用 - 當您嘗試使用any預期更具體的類型時,它會拋出錯誤。

其他有用的方法是使用const而不是let- with const,類型將始終被自動推斷。您可能偶爾需要注釋比推斷的類型更具體的類型,但至少推斷的類型將始終是特定的,而不是any. (無論如何const都應該優先于let任何時候)

如果您確實必須使用let- 這有時是必要的 - 然后在初始化時為其分配一個值(并且類型推斷將起作用),或者使用類型注釋,如

let number1: number;

以便正確輸入,否則會any出現問題。

當變量最初沒有分配任何東西時使用類型注釋是非常好的。


查看完整回答
反對 回復 2022-06-16
  • 1 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號