【发布时间】:2019-04-15 10:39:35
【问题描述】:
我正在尝试将 JavaScript 代码重写为 TypeScript,但在尝试将类导入不同的 TypeScript 文件时遇到了一些问题。
这曾经是用 jQuery 命名空间来完成的,它工作得很好。
我的情况是:
文件布局:
import { Commands } from './funnel.commands'
var commands = new Commands(); /*<--- problematic line*/
export class Layouts {
loadHtmlSubLayout(done: Function, layoutname: string): void {
/*...*/
commands.CloseSubLayout();
/*...*/
};
closeSubLayout(layoutContent): void {
/*...*/
};
}
文件命令:
import { Layouts } from './funnel.layouts'
var layouts = new Layouts();
export class Commands {
GotoLayout(el, cmd: CommandObj): void {
/*...*/
layouts.loadSpecificLayout(layouts.onLayoutSwitched, layoutName);
};
CloseSubLayout(): void {
/*...*/
if ($subLayoutContent.length !== 0) {
layouts.closeSubLayout($subLayoutContent);
}
};
}
每当我尝试运行它时,都会收到错误消息“命令不是构造函数”。我怎样才能确保它在不移动方法的情况下有效?
【问题讨论】:
-
你在 B 中导入 A,在 A 中导入 B……你以上帝的名义在做什么?
-
这不是我的原始代码,幸好我只是为公司重写它,显然示例被简化了,但是使用 jQuery 版本有点意义
-
@HagelslagPakje 我错了,循环 dep 导致运行时出现问题。
-
是的,就像我已经说过的,这与一个类导入另一个类的事实有关,反之亦然,只需要一些帮助来修复它而不移动所有代码
-
@HagelslagPakje 这也可以使用 TS 命名空间来解决。但是你想怎么用这些来归档呢?如果你打算使用严格的模块,那么必须做一些重构。
标签: javascript typescript import export