is關鍵詞主要用來框定類型并實現對應的類型斷言,下面看一個例子
寫一個簡單函數來判斷某個值是否是字符串類型
function isString(value:unknown):boolean{return typeof value === "string"
}
這里我們的參數選用了unknown類型,該類型就是一個保險的any,當你去調用一些屬性和方法的時候會報錯,因為其是一個危險的“未知”類型。
用上面那個函數去進行一個簡單的判斷
let someValue:unknown="hhhha"
if (isString(someValue)){console.log(someValue.length); //這邊出現報錯,someValue任然是個unknown類型
}
在上面這個判斷中,istring能判斷一個值是否是string,是的話就打印出該字符串的長度
雖然我們已經判斷出其是個string類型,但是其類型沒有實現轉換,因此不能調用length屬性
我們可以使用is關鍵詞去改寫這個判斷函數
function isString1(value:unknown):value is string{return typeof value ==="string"
}
進行一下判斷
if (isString1(someValue)){console.log(someValue.length);
}
這里就沒有報錯,如果在編輯器上可以發現,這個someValue的類型轉成了string