有時候你會遇到這樣的情況,你會比TypeScript更了解某個值的詳細信息。 通常這會發生在你清楚地知道一個實體具有比它現有類型更確切的類型。
通過類型斷言這種方式可以告訴編譯器,“相信我,我知道自己在干什么”。 類型斷言好比其它語言里的類型轉換,但是不進行特殊的數據檢查和解構。 它沒有運行時的影響,只是在編譯階段起作用。 TypeScript會假設你,程序員,已經進行了必須的檢查。
類型斷言有兩種形式。
//類型斷言有兩種形式。 其一是“尖括號”語法: let someValue: any = "this is a string"; let strLength: number = (<string>someValue).length; //另一個為as語法: let someValue: any = "this is a string"; let strLength: number = (someValue as string).length;
//這塊是鼠標的經過事件typescript寫法,因為這個onMouseOver是寫到tsx里面的,所以這個方法的參數返回的是React.MouseEvent
onMouseOver = (e:React.MouseEvent) => {
//as HTMLElement是把目標target斷言為HTMLElement, 預言為肯定不為null或者undefined的情況
const $target = e.target as HTMLElement;
const ref:string = $target.getAttribute('ref) as string;
console.log(ref)
}