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