我可以在单个文件中合并枚举声明,例如
export enum Test {
value1 = <any>'value1',
value2 = <any>'value2'
}
export enum Test {
value3 = <any>'value3'
}
这很好用,但我的意图是有一个共享的枚举,我可以在以后扩展,例如
// test.enum.ts
export enum Test {
value1 = <any>'value1',
value2 = <any>'value2'
}
// place-to-extend-enum.ts
import { Test } from './test.enum';
export enum Test {
value3 = <any>'value3'
}
我得到的是
合并声明'Test'中的个别声明必须全部 出口或所有当地。
有没有办法达到预期的行为?
答案 0 :(得分:13)
答案 1 :(得分:5)
我看到了一种可以在现有枚举中添加其他功能/方法的方法。这是通过在类似于枚举类型的命名空间中创建函数:这里
enum Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
namespace Weekday {
export function isBusinessDay(day: Weekday) {
switch (day) {
case Weekday.Saturday:
case Weekday.Sunday:
return false;
default:
return true;
}
}
}
const mon = Weekday.Monday;
const sun = Weekday.Sunday;
console.log(Weekday.isBusinessDay(mon)); // true
console.log(Weekday.isBusinessDay(sun)); // false
您可以在“{静态功能枚举”
部分https://basarat.gitbooks.io/typescript/docs/enums.html查看完整信息答案 2 :(得分:1)
经过一些研究后,我必须承认我找不到一种超级正确的方法来做到这一点。
但是有两种可能的解决方案并不是那么糟糕而且不会那么臭。
首先是实现自定义枚举 - 这种方式不允许使用现有的枚举。这可能是此方法的唯一限制。除此之外,它看起来简单而且很原生。
另一种方法是[使用单独的类型声明将枚举合并到一个值中]。这种方式允许使用已存在的真实的枚举;但是它使用起来不太舒服,因为有两个实体需要注意:枚举值和枚举类型。