在TypeScript中增强一个类,该类也是来自单独文件的名称空间

时间:2018-09-22 01:33:39

标签: typescript

我正在尝试使用来自单独文件的附加字段来扩充类。但是,我遇到了麻烦,因为这似乎使嵌套声明的名称空间不可访问。

Augment.ts:

declare module './MyClass' {
  export default interface MyClass {
    augmentedField: any
  }
}
import MyClass from './MyClass';
export { MyClass };

MyClass.ts:

namespace MyClass {
  interface Nested {
  }
}
class MyClass {}
export default MyClass;

User.ts:

import {MyClass} from './Augment'
interface Example {
  nested: MyClass.Nested
}

失败:

  

“ MyClass”仅引用一种类型,但在此处被用作命名空间。

有什么主意,我们怎么做这项工作?

1 个答案:

答案 0 :(得分:0)

我认为完全不应该支持扩展默认导出,但是当前界面情况已经超出了该检查范围,并导致了其他错误行为。我提交了a TypeScript bug。最好的选择可能是将MyClass命名为MyClass.ts的导出,而不是默认的导出。