bni*_*and 7 typescript es6-modules
给定的
export default
before class gamma {}
gamma
导入全局命名空间(即窗口对象),以便现有的全局和模块脚本可以访问它。我在global.d.ts周围尝试了很多东西
例如
import gammaAlias from "../scripts/gamma";
export as namespace NS_Global;
declare global {
var qqq: {n:string};
namespace ZZZ {
export var gamma: gammaAlias;
}
var gamma: gammaAlias;
}
Run Code Online (Sandbox Code Playgroud)
但没有一个有效
即打字稿告诉我以下之一
Cannot use 'new' with an expression whose type lacks a call or construct signature.
我有一个 github repo 设置来调查这些问题。 https://github.com/penguin020/expose-typescript-modules-globally
ConvertToModulesPOC_original 是工作“之前”的情况。
ConvertToModulesPOC 是将 gamma .ts 转换为模块并在全球公开它的失败尝试。
问题仍然存在,如何将模块暴露给全局命名空间?
任何使用 github 中示例的答案将特别感谢!
我在“ TypeScript:在全局上下文中公开模块类型以及为什么要避免它”中找到了答案;
我已经更新了 github 存储库。
我发现的最显着的变化是:
在tsconfig中:
"module": "system",
Run Code Online (Sandbox Code Playgroud)
在yMod.ts中
import gammaAlias from "../scripts/gamma.js";
declare global {
export type gamma = gammaAlias;
export const gamma: typeof gammaAlias;
}
(window as any).gamma = gammaAlias;
Run Code Online (Sandbox Code Playgroud)
注意:您可以在另一个文件中使用全局环境声明,甚至是 *.d.ts 文件。
上面的链接详细说明了每个符号在全局范围内公开三个引用的原因。该页面上对此进行了很好的解释,因此我仅在此总结:
归档时间: |
|
查看次数: |
1212 次 |
最近记录: |