在TypeScript中,extends關鍵字不僅可以用于類的繼承,還可以用于條件類型的定義。
條件類型是一種在類型系統中進行條件判斷的機制。通過使用extends關鍵字,我們可以根據給定的類型條件來確定最終的類型。條件類型的語法如下:
T extends U ? X : Y
其中,T是待判斷的類型,U是用于判斷的類型,X和Y是根據判斷結果分別返回的類型。
下面是一個簡單的示例:
type TypeName<T> =
T extends string ? "string" :
T extends number ? "number" :
T extends boolean ? "boolean" :
T extends undefined ? "undefined" :
T extends Function ? "function" :
"object";
type T1 = TypeName<string>; // "string"
type T2 = TypeName<"hello">; // "string"
type T3 = TypeName<123>; // "number"
type T4 = TypeName<true>; // "boolean"
type T5 = TypeName<undefined>; // "undefined"
type T6 = TypeName<() => void>; // "function"
type T7 = TypeName<object>; // "object"
type T8 = TypeName<number[]>; // "object"
在上面的示例中,我們定義了一個條件類型TypeName,它根據給定的類型T判斷其類型名稱,并返回相應的字符串類型。根據類型的不同,返回的結果會分別是"string"、“number”、“boolean”、“undefined”、“function"和"object”。
通過使用extends關鍵字,我們可以根據不同的類型條件來確定最終的返回類型。如果T是string類型,那么最終的返回類型就是"string";如果T是number類型,那么最終的返回類型就是"number",以此類推。對于無法匹配的類型,最終的返回類型就是"object"。
需要注意的是,extends關鍵字在條件類型中的使用類似于JavaScript中的三元條件運算符。