[英]TypeScript: How to get the keys of an enum as type?
我想獲取枚舉的鍵作為一種類型,以使我的應用程序類型在其他部分安全。
看看這個代碼片段:
enum Layers {
Front = 1,
Middle = 2,
Back = 3,
}
type LayerKeys = key in Layers; // <--- THIS PSEUDOCODE IS NOT WORKING
type LayerConfig = Map<LayerKeys, {}>;
我怎樣才能在這里正確獲取枚舉鍵?
所問問題的答案是查詢鍵(通過名為Layers
的object的keyof
類型運算符。object 具有可以通過typeof
類型運算符獲取的類型:
type LayerKeys = keyof typeof Layers
// type LayerKeys = "Front" | "Middle" | "Back"
正如已經建議的那樣,您可以直接使用枚舉層作為 map 定義的一部分,但是如果您想嘗試使用鍵,您可以使用這個庫ts-enum-util ; 它提供了一系列圍繞enums
的實用程序
enum Layers {
Front = 1,
Middle = 2,
Back = 3,
}
const keys = $enum(Layers).getKeys();
type LayerKeys = typeof keys[number]
type LayerConfig = Map<LayerKeys, {}>;
用$enum(Layers).getKeys()
檢索枚舉的鍵列表作為數組,然后你可以使用這個數組作為類型規范
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.