针对export interface 和 export namespace的疑问?

我经常看到export interface XXX 和export namespace XXX 还有export class 结合使用:

export interface Disposable {
  /**
   * Dispose this object.
   */
  dispose: () => void
}

export namespace Disposable {
  export function disposeAll(disposables: Disposable[]) {
    for (const disposable of disposables) {
      disposable.dispose();
    }
  }
}

export class DisposableCollection implements Disposable {
  ...
}

请问下,这里有export interface Disposable 和 export namespace Disposable,
我们在使用的时候,是怎样的呢?

import {Disposable} from './disposible'

1、这里引入的是:interface Disposable 还是 namespace Disposable?
2、export interface XXX 和 export namespace 成对出现的好处是什么呢?
3、export namespace Disposable 内的 function disposeAll 为何也要export?如果不export会怎样?

阅读 1.2k
1 个回答

1.你用import {Disposable} from './disposible'那它们两个都引入了,共享名称
2.你可以用相同的名称来表示相关的类型和实现
3.在 Disposable 命名空间内部定义的函数 disposeAll 要用 export,这样其他模块才能访问。如果你不用 export,disposeAll 函数就只能在 Disposable 命名空间内部用。如果你想其他模块能够用 disposeAll 函数,你就要把它导出

推荐问题
logo
Microsoft
子站问答
访问
宣传栏