TypeScript 从类 + 命名空间拆分接口
Posted
技术标签:
【中文标题】TypeScript 从类 + 命名空间拆分接口【英文标题】:TypeScript split interface from class + namespace 【发布时间】:2019-03-18 18:37:39 【问题描述】:在 TypeScript 中,我有一个与命名空间合并的类 (foo.ts):
export class C
foo(): Foo ...
export namespace C
type Foo = ...
...
在准备使用 inversify 时,我想将此类的接口放在不同的文件中。我尝试过这样的事情:
(interfaces.ts)
export interface IC
foo (): C.Foo
...
export namespace C
type Foo = ...
(foo.ts)
import C, IC from './interfaces'
export class C
foo (): Foo ...
但是,编译 foo.ts 给我一个错误:“合并声明 'C' 中的单个声明必须全部导出或全部本地。”我想这意味着我已经导入了命名空间,但我没有导出它(尽管我希望导出类应该导出合并的实体)。我该如何解决这个问题?
【问题讨论】:
【参考方案1】:啊哈——写下我的问题让我得到了答案。 foo.ts 可以改成:
import C, IC from './interfaces'
class C
foo (): Foo ...
export C
需要单独导出似乎很奇怪,但很高兴知道它有效。
【讨论】:
hmm... 但不能完全正常工作。如果第三个模块从foo.ts
导入 C,它只会导入类,而不是命名空间 (?!)。暂时离开,但会接受更好的方式。以上是关于TypeScript 从类 + 命名空间拆分接口的主要内容,如果未能解决你的问题,请参考以下文章