我可以在单个文件中合并枚举声明,例如
export enum Test {
value1 = <any>'value1',
value2 = <any>'value2'
}
export enum Test {
value3 = <any>'value3'
}
Run Code Online (Sandbox Code Playgroud)
这样做很好,但我的意图是有一个共享的枚举,我可以在以后扩展,例如
// 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'
}
Run Code Online (Sandbox Code Playgroud)
我得到的是
合并声明'Test'中的个别声明必须全部导出或全部导出.
有没有办法实现理想的行为?
Chk*_*ang 13
请参阅https://github.com/Microsoft/TypeScript/pull/6213,您可以这样做:
// test.enum.ts
export enum Test {
value1 = <any>'value1',
value2 = <any>'value2'
}
// place-to-extend-enum.ts
import { Test } from './test.enum';
declare module './test.enum' {
export enum Test {
value3 = <any>'value3'
}
}
Run Code Online (Sandbox Code Playgroud)
... 魔法!;)
我看到了一种可以在现有枚举中添加其他功能/方法的方法。这是通过在类似于枚举类型的名称空间内创建函数来实现的:
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
Run Code Online (Sandbox Code Playgroud)
您可以在https://basarat.gitbooks.io/typescript/docs/enums.html的“带有静态函数的枚举”部分中看到完整的信息。
| 归档时间: |
|
| 查看次数: |
13524 次 |
| 最近记录: |