---
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 操作」。
## 線上討論紀錄
- 很快速帶過~