在声明文件中自动"导出为命名空间"

sir*_*cco 7 typescript typescript-typings

我有一个小型的ts库,可以作为UMD输出,我也可以通过tsconfig自动输出*.d.ts文件:"declaration": true.

正在导出的文件如下所示:

export class Blue { 
    alert(): void {
        console.log('alerted');
    }
}
Run Code Online (Sandbox Code Playgroud)

使用导出的UMD模块声明window.myLib变量.

d.ts文件如下所示:

export declare class Blue {
    alert(): void;
}
Run Code Online (Sandbox Code Playgroud)

现在,无论是通过webpack,还是我还没有找到的typescript选项,我还想在d.ts文件中生成以下行:

export as namespace myLib;
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?谢谢.

zzx*_*oto 2

而不仅仅是:

export class Blue { 
    alert(): void {
        console.log('alerted');
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试:

class Blue_ { 
  alert(): void {
      console.log('alerted');
  }
}

export { Blue_ as Blue };

declare global {
  namespace myLib {
    let Blue: typeof Blue_;
  }
}
Run Code Online (Sandbox Code Playgroud)

这将生成以下声明文件:

declare class Blue_ {
    alert(): void;
}
export { Blue_ as Blue };
declare global {
    namespace myLib {
        let Blue: typeof Blue_;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在myLib.Blue可以在全球范围内访问,并且还class Blue可以像import { Blue } from '...'. 这相当于export as namespace myLib;在声明文件中包含。

希望这可以帮助。