TypeScript:扩展导入的枚举 [英] TypeScript: extending imported enum
本文介绍了TypeScript:扩展导入的枚举的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
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}来自'./test.enum';
export enum Test {
value3 =< any>'value3'
}
我得到的是
合并声明Test中的个人声明必须全为
导出或全部本地。
有没有办法实现所需的行为?
解决方案
参考 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';
声明模块'./test.enum'{
export enum Test {
value3 =< any>'value3'
}
}
...
魔术! ;)
I can merge enum declarations within a single file e.g.
export enum Test {
value1 = <any>'value1',
value2 = <any>'value2'
}
export enum Test {
value3 = <any>'value3'
}
This works fine, but my intention is to have a shared enum which I can extend later, e.g.
// 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'
}
What I get is
Individual declarations in merged declaration 'Test' must be all exported or all local.
Is there a way to achieve the desired behaviour?
解决方案
In refer to https://github.com/Microsoft/TypeScript/pull/6213 you can do :
// 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'
}
}
... Magic! ;)
这篇关于TypeScript:扩展导入的枚举的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文