TS之型別推論 聯合型別 型別斷言

2022-06-14 09:51:07 字數 1075 閱讀 6918

ts中,沒有明確指出型別的地方,型別推論會幫助提供型別。如下面的例子:

let x = 3
這裡的x就被推斷為數字,這種推斷發生在初始化變數和成員,設定預設引數值和決定引數返回值時。 

如果要從幾個表示式中推斷型別的時候,會使用這些表示式的型別來推斷出乙個最合適的通用型別。例如:

let x = [0, 1, null];
為了推斷x的型別,我們必須考慮所有元素的型別。 這裡有兩種選擇:numbernull。 計算通用型別演算法會考慮所有的候選型別,並給出乙個相容所有候選型別的型別。

當乙個變數的屬性無法確定的時候就可以用到聯合型別(union type)。如:

let nos: number |string

nos = 123nos = "abc"

上面**表示nos這個變數的型別可以是number或者是string。

注意的是,如果ts不確定乙個聯合型別的變數是哪個型別的時候,只能訪問此聯合型別的共有的屬性/方法。如:

這裡只有number和string型別共有的這三個方法供選擇。

ts告訴的型別斷言的作用是告訴編譯器,我自己比編譯器更了解這個型別,並且不應該報出錯誤來。示例:

function getlength(input: string |number): number  

else}//

不能斷言成乙個不存在的型別

let nl = getlength(123)

let sl = getlength("abc")

上面**使用as關鍵字手動將str變數斷言為string和number屬性。且不能斷言成乙個不存在於引數中定義的型別。

上面功能還可以使用typeof關鍵字來實現:

function getlength(input: string |number): number  

else

}

Go之型別斷言

一 由於介面是基本型別,不知道具體型別,如果要轉成具體型別需要使用型別斷言 package main import fmt type dy struct func main var dy dy dy i1 dy var i2 dy dy i1 會報錯 型別斷言才能把介面轉為具體型別 i2 i1.dy...

ts定義陣列型別 ts中型別

1 vscode配置自動編譯 1.第一步 tsc inti 生成tsconfig.json 改 outdir js 2 第二步 任務 執行任務 監視tsconfig.json 2 typescript中的資料型別 typescript中為了使編寫的 更規範,更有利於維護,增加了型別校驗,在types...

GO語言使用之型別斷言

型別斷言,由於介面是一般型別,不知道具體型別,如果要轉成具體型別,就需要使用型別斷言 型別斷言 func typeassertion x t ok 待檢測的型別斷言 y res x.float32 if res else y1 res1 x.int32 轉成float if res1 else 1 ...