TypeScript:扩展导入的枚举 [英] TypeScript: extending imported enum

查看:664
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆