typescript - 在 typescript 中扩展枚举

标签 typescript typescript-typings

我希望在枚举中重用某些值。
有关如何实现此类功能的任何建议。

enum someEnum {
    a = 'Some String',
    b = 2,
};

enum extendedEnum {
    c = 'string',
    b = someEnum.b
}

type someEnumType<T extends someEnum> = T extends someEnum.a ? string :
    T extends someEnum.b ? number : never;

type extendedEnumType<T extends extendedEnum> =
    T extends extendedEnum.c ? string:          // Gives Error
    T extends extendedEnum.b ? number : never;  // Gives Error

最佳答案

enum Color1 {
  Red = "Red",
  Green = "Green"
}

enum Color2 {
  Yellow = "Yellow",
  Blue = "Blue"
}
定义一个名为 Colors 的新类型:
type Colors = Color1 | Color2;
然后你可以使用它如下:
public color: Colors;

ngOnInit(): void {
  const Colors = { ...Color2, ...Color1 };
  this.color = Colors.Red; // Colors.Green or Colors.Yellow or Colors.Blue
}
Stackblitz Here

关于typescript - 在 typescript 中扩展枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52857698/

相关文章:

Typescript 有条件地使属性可选

javascript - 这两个 "extends"子句有什么区别?

typescript - Typescript 请求/响应的条件类型

typescript - 在 typescript 中 : Is there a way to initialize an object or array inline (with a certain interface type)?

reactjs - 如何从 React Typescript 中的输入字段获取值?

javascript - 用于外部点击的 @HostListener OnClick 在 Firefox 中不起作用

javascript - 通过 id 获取元素 - Angular2

typescript - 如何覆盖外部 TypeScript 接口(interface)

typescript-typings - 如何修复节点类型的 tsc 抛出错误?

typescript - 嵌套类型的模板文字类型