Typescript里enum枚舉類型動態(tài)取值

有時候我們在寫代碼時,會有根據(jù)傳入的值來轉(zhuǎn)換成對應(yīng)的數(shù)據(jù)這種情況,比如:

const TYPE = {
  'white': '#FFF',
  'black': '#000'
}

// 調(diào)用:
let colors = ['white', 'black'];
colors.map(item => <span style={{ color: `${TYPE[item]}`}}>文字顏色</span>)

像這種根據(jù)對象的key值來取對應(yīng)的值,在ts里,如果key值類型多樣,也會用枚舉之類的來處理,但是直接[變量]這種形式來取,會ts類型檢驗報錯。


image.png

因為enum枚舉類型里的key不是單純的string,number這種類型,枚舉的 key 是 string literal 類型。這個時候我們可以用keyof來取出枚舉里的所有key值作為type。

type TYPES = keyof typeof TYPE;
image.png

keyof是ts的索引類型操作符,屬于ts的高級類型。
對于任何類型T,keyof T得到的類型是T的屬性名稱字符串字面量類型構(gòu)成的聯(lián)合類型。
它同樣可以用于獲取interface接口定義的屬性名稱。

interface Person {
  name: string;
  age: number;
  sex: string;
}
type Persons = keyof Person;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容