[英]Define class as global variable in Typescript to use without import it in js later
我确定那里已经有了答案,但我连续搜索了一个小时,但无法让它发挥作用。
我正在尝试重构一些旧代码,其中只使用了 vars 和 global vars。 我想我开始将两个构造函数(如果你可以这样称呼它们)作为新类来实现,但仍然在 js 中将它们用作全局变量(没有任何导入语句)。 对于第一个运行良好的示例,我什至不必导出类,而是通过 index.html 文件将其包含在内,并像以前一样在 js 代码中使用它。 但是在第二堂课上我遇到了一些问题,我不得不从另一个 js 文件中导入代码,所以我在项目中包含了 requireJs 并通过import qSVG = require('../js/qSVG.js');
导入了它import qSVG = require('../js/qSVG.js');
. 通过使用 requireJs 并在我的 tsconfig 中切换到"module": "AMD"
我用它制作了一个模块,因此无法在其他任何地方使用它。 我不能一次重写整个项目,所以我需要像以前一样调用它。
我怎样才能做到这一点?
如何将其导出到全局命名空间,以便每个文件都知道它而无需任何导入?
tsconfig.json(只是由 webstorm 生成的扩展默认值)
{
"compilerOptions": {
"module": "AMD",
"lib": ["es6", "dom", "es2017"],
"target": "es5",
"sourceMap": true
},
"exclude": [
"node_modules"
]
}
二维对象.ts
import $ = require('../../libraries/jquery.min.js');
import qSVG = require('../js/qSVG.js');
export class TwoDimensionalObject {
/* some properties */
constructor(/*params*/) {
// initialisation code
}
public update(): boolean {
// some code
}
}
编辑器.js
function _MOUSEMOVE(event) {
/* some code */
binder = new TwoDimensionalObject(/*params*/)
/* some code */
}
我已经尝试了一些东西
只需添加到窗口对象,如: (window as any).TwoDimensionalObject = TwoDimensionalObject
扩展窗口对象,如:
declare global {
interface Window { TwoDimensionalObject: any; }
}
window.TwoDimensionalObject = window.TwoDimensionalObject;
declare const TwoDimensionalObject = TwoDimensionalObject;
您可以在 window 对象中设置它:
二维对象.ts
...
export class TwoDimensionalObject {
...
}
...
window['TwoDimensionalObject'] = TwoDimensionalObject;
alert('TwoDimensionalObject class is now global!!!!!!!!!!!!!!');
确保它将以某种方式执行,例如在某个入口文件中:
main.ts (入口代码)
import './two-dimensional-object';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.