在打字稿中扩展枚举

2023-12-22

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

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

目前,您无法在 TypeScript 中扩展枚举

另一种选择是使用类型:

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

enum Color2 {
    Yellow = "Yellow",
    Blue = "Blue"
}

定义一个名为 Colors 的新类型:

type Colors = Color1 | Color2;

然后您可以按如下方式使用它:

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

Stackblitz 这里(角度) https://stackblitz.com/edit/extending-enum-in-typescript

Stackblitz 这里(打字稿) https://stackblitz.com/edit/typescript-3xheja?file=index.ts

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在打字稿中扩展枚举 的相关文章

随机推荐