簡體   English   中英

是否可以迭代聯合類型的鍵?

[英]Is is possible to iterate over the keys of a union type?

例如,是否可以在 Typescript 中迭代聯合類型的鍵,類似於如何使用Object.keys(someVar).map()

示例類型可能是:

type Status = "status_1" | "status_2" | "status_3"

我見過的另一種方法是創建一個不可變數組,然后使用帶有索引的typeof運算符來模仿此功能,但這似乎很笨拙

export const CaseStatuses = ["status_1", "status_2", "status_3"] as const;
export type CaseStatus = typeof CaseStatuses[number];

除了不可變數組之外,您還可以使用枚舉類型而不是聯合類型。 它是唯一在編譯時未被擦除的類型(枚舉在編譯時被轉譯為 object)。 然后,使用Object.keys() / Object.values()對其進行迭代。

enum Status {
  status_1 = "status_1",
  status_2 = "status_2",
  status_3 = "status_3",
}

// Iterate over it
console.log(Object.values(Status))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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