--- tags: TypeScript 新手指南 --- # #4 新手指南:型別斷言 > 討論日期: 2021/11/30 > 討論範圍: 新手指南:型別斷言 ## 筆記分享 - https://dazedbear.notion.site/TypeScript-4-2a3f34f3c5f84f258fb12ce901a64c73 ## 待解決問題 ### 1. 何時會用到 Double Assertion? https://basarat.gitbook.io/typescript/type-system/type-assertion#double-assertion ```typescript= // 這兩者完全等價,只有使用偏好的差異 (ex: linter rule、字數多寡) 值 as unknown as 型別 值 as any as 型別 ``` ```typescript= // 這樣會報錯 function handler(event: Event) { let element = event as HTMLElement; // Error: Neither 'Event' nor type 'HTMLElement' is assignable to the other } // 這樣不會報錯,因為 event 先被斷言成 unknown 再被斷言成 HTMLElement,unknown 相容於任何型別 function handler(event: Event) { let element = event as unknown as HTMLElement; // OK! } ``` ### 2. 延伸閱讀:Narrowing https://pjchender.dev/typescript/ts-narrowing/#%E4%BD%BF%E7%94%A8-typeof > Narrowing 指的是將某一個最初定義可能為多種型別的變數,透過一些 Type Guard 的程式邏輯逐漸限縮成更具體的某單一種型別的過程。 > 作為「當型別為 X 才執行 Y 操作」。 ## 線上討論紀錄 - 很快速帶過~