TypeScript:从接口键创建枚举

6

我有一个接口:

interface ISomething {
  red: string;
  blue: string;
  green: string;
}

可以定义一个枚举来表示接口中的键吗?

我想要像这样的结果:

enum SomethingKeys {
   red = "red",
   blue= "blue",
   green= "green",
}

提示:我是ts的新手,如果问题不正确请谅解。

1个回答

4
您可以通过创建一个具有枚举键的对象来实现另一种方式:
enum SomethingKeys {
   red = "red",
   blue= "blue",
   green= "green",
}
type ISomething= Record<SomethingKeys, string>
const a: ISomething = {
    [SomethingKeys.blue]: 'blue',
    [SomethingKeys.red]: 'red',
    [SomethingKeys.green]: 'green',
}

但我认为你真正需要的不是枚举,而是通过 keyof 定义的联合类型。考虑:

interface ISomething {
  red: string;
  blue: string;
  green: string;
}
type Keys = keyof ISomething; // "red" | "blue" | "green"

作为新手,您可以使用字符串常量联合。您不需要枚举。

当您拥有Keys时,您可以将它们用于创建其他类型。

// new object with keys of the original one
type OtherTypeWithTheSameKeys = Record<Keys, number> // type with keys of type Keys
const a: OtherTypeWithTheSameKeys = {
  blue: 1,
  green: 2,
  red: 3
}

谢谢回答。是否可以使用接口键创建具有属性的对象? - UserTest013
1
是的,我为您添加了一个示例。 - Maciej Sikora
谢谢,您能否建议一下,在某些函数中是否可以自动定义这样的对象? - UserTest013

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接