類型斷言知識點
語法:
<類型> 值 或者 值 as 類型
類型斷言解決的問題:
function doAs(a:string | number):void{
console.log(a.length); //報錯,類型“number”上不存在屬性“length”。
}
//使用類型斷言時,要加上括號,如(<string>a).length
function doAs(a:string|number):void{
console.log((<string>a).length); //沒問題
}
function doAs(a:string|number):void{
console.log((a as string).length); //沒問題
}
由於定義函數參數用了混合類型,裏面只能訪問混合類型的公共屬性。當我們必須用到某個類型的獨有屬性時,就得使用類型斷言。即將一個聯合類型的變量指定爲一個更加具體的類型
注意:
- 類型斷言不是類型轉換,斷言成一個聯合類型中不存在的類型是不允許的.
- jsx語法中,只能使用 as