簡體   English   中英

TypeScript:如何獲取枚舉類型的鍵?

[英]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, {}>;

我怎樣才能在這里正確獲取枚舉鍵?

所問問題的答案是查詢鍵(通過名為Layersobjectkeyof類型運算符。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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM