TypeScript 从类 + 命名空间拆分接口



在TypeScript中,我有一个与命名空间合并的类 (foo.ts(:

export class C {
foo(): Foo { ... }
}
export namespace C {
type Foo = ...
...
}

为了准备使用 inversify,我想将此类的接口放在不同的文件中。我尝试了这样的事情:

(接口.ts(

export interface IC {
foo (): C.Foo
...
}
export namespace C {
type Foo = ...
}

(福.茨(

import { C, IC } from './interfaces'
export class C {
foo (): Foo { ... }
}

但是,编译 foo.ts 会给我一个错误:"合并声明'C'中的单个声明必须全部导出或全部导出为本地声明。我想这意味着我已经导入了命名空间,但我还没有导出它(尽管我希望导出类应该导出合并的实体(。如何解决此问题?

啊哈 - 写下我的问题让我得到了答案。 foo.ts可以更改为:

import { C, IC } from './interfaces'
class C {
foo (): Foo { ... }
}
export { C }

需要单独导出似乎很奇怪,但很高兴知道它有效。

最新更新