typescript - 是否有可能遍历联合类型的键?
在 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];
答案#1
除了不可变数组之外,你可以使用枚举类型代替联合类型。它是唯一在编译时不会被擦除的类型(枚举在编译时会被转换为对象)。然后,使用 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))
