TypeScript 條件類型(conditional type)
TypeScript 條件類型(conditional type) 是 TypeScript 3.0 版本新增的功能,它可以讓開發者在型別定義時,根據條件來決定型別的變化。
什麼是條件類型
條件類型是一種型別轉換,它可以根據某個條件,將一個型別轉換成另一個型別。它的語法是 T extends U ? X : Y
,其中 T
是一個型別,U
是一個型別,X
和 Y
是兩個型別,如果 T
繼承自 U
,則結果為 X
,否則結果為 Y
。
舉個例子,假設我們有一個型別 T
,它可以是 string
或 number
,我們可以使用條件類型來決定 T
的型別:
type T = T extends string ? string : number;
上面的程式碼會將 T
的型別決定為 string
或 number
,取決於 T
是否繼承自 string
。
條件類型的應用
條件類型可以用於許多不同的場景,例如:
- 將一個型別轉換為另一個型別,例如將
string
轉換為number
; - 將一個型別轉換為另一個型別的子類型,例如將
string
轉換為string | number
; - 將一個型別轉換為另一個型別的聯合類型,例如將
string
轉換為string & number
; - 將一個型別轉換為另一個型別的交集類型,例如將
string
轉換為string & number
; - 將一個型別轉換為另一個型別的差集類型,例如將
string
轉換為string & number
; - 將一個型別轉換為另一個型別的反向類型,例如將
string
轉換為string & number
。
結論
TypeScript 條件類型(conditional type) 是 TypeScript 3.0 版本新增的功能,它可以讓開發者在型別定義時,根據條件來決定型別的變化。條件類型可以用於許多不同的場景,例如將一個型別轉換為另一個型別、將一個型別轉換為另一個型別的子類型、將一個型別轉換為另一個型別的聯合類型等等。