首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将模块中的类公开给TypeScript中的全局命名空间?

如何将模块中的类公开给TypeScript中的全局命名空间?
EN

Stack Overflow用户
提问于 2019-11-22 19:00:26
回答 3查看 2.2K关注 0票数 7

问题

给定的

  • 我有一个包含模块和全局脚本(常规非模块脚本)的现有应用程序。
    • 模块
      • App.ts

代码语言:javascript
运行
复制
- global scripts  
    - **alpha.ts** contains a class named alpha
    - **beta.ts** contains a class named beta
    - **gamma.ts** contains a class named gamma

  • 我想将全局脚本中的一个类(gamma.ts)转换为模块
    • 通过在export default gamma.ts中在class gamma {}之前添加gamma.ts

  • 我希望将类gamma导入全局命名空间(即窗口对象),以便现有的全局和模块脚本能够访问它。

我试过的

我试过很多关于global.d.ts的东西

例如:

代码语言:javascript
运行
复制
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;
}

但是没有一个能起作用

也就是说,TypeScript告诉我以下几点之一

  • 伽马不存在
  • Cannot use 'new' with an expression whose type lacks a call or construct signature.

github

我有一个github回购机构来调查这些问题。https://github.com/penguin020/expose-typescript-modules-globally ConvertToModulesPOC_original是工作的“先”的情况。 ConvertToModulesPOC是将gamma .ts转换为模块并在全局公开的失败尝试。

PS

问题仍然是,如何将模块公开到全局命名空间?

任何使用github中的例子的答案都将被特别感谢!

EN

Stack Overflow用户

发布于 2020-02-28 18:50:40

这对我有用。我只希望不用重命名界面。

代码语言:javascript
运行
复制
declare global {
  interface IMyClass extends MyClass { }
}

class MyClass {

}

代码语言:javascript
运行
复制
declare global {
  type IMyClass = MyClass;
}

class MyClass {

}
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59000222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档