keyof 型別運算子
keyof 運算子接收一個物件型別,並生成其鍵名構成的字串或數字字面量聯合型別。以下型別 P 與 type P = "x" | "y" 是相同的型別。
tsTrytypePoint = {x : number;y : number };typeP = keyofPoint ;
如果該型別具有 string 或 number 索引簽名,keyof 則會返回這些型別。
tsTrytypeArrayish = { [n : number]: unknown };typeA = keyofArrayish ;typeMapish = { [k : string]: boolean };typeM = keyofMapish ;
請注意,在此示例中,M 是 string | number —— 這是因為 JavaScript 物件鍵名總是被強制轉換為字串,所以 obj[0] 始終等同於 obj["0"]。
當 keyof 型別與對映型別(mapped types)結合使用時會非常有用,我們稍後將詳細介紹。