javascript - 使用 requireJS 加载一些 typescript 模块

标签 javascript typescript requirejs js-amd

我在使用 RequireJs 连接某些 typescript 类时遇到问题。 在 .ts 文件中,我使用模块语法和 AMD 模块。我的主文件是 GameLoader.ts,它返回游戏的实例。例如,我正在创建 World 实例:

import World = require('Resources/Scripts/Game/Entities/Game/World');
...
var world = new World(json.world.level, json.world.size, json.world.passMap);

它工作得很好 - 世界真正需要的功能

但同时同一个文件(GameLoader.ts):

import Camera = require('Resources/Scripts/Game/Presentation/Camera/Camera');
...
var camera = new Camera();

相机是空对象(而不是函数) 未捕获的类型错误:相机不是函数 文件已加载,但调试器显示其内容未使用 - 函数定义内的断点不起作用。但在 World 中,断点是在加载主程序之前触发的。

寻找错误我试图从 Camera.ts 中删除所有内容。 删除后,我以相同的方式从另一个文件(temp.ts)调用空相机:

import c = require('Resources/Scripts/Game/Presentation/Camera/Camera');
var cam = new c();
console.log(cam);

并且成功了。

在这两种情况下,编译器(针对 Camera.js)生成的 Ts 代码看起来是相同的。 使用相同的方式调用编译文件 - 通过调用 RequireJs API。

也许问题是指向文件 GameLoader 的循环引用? 但是我的应用程序是从游戏类(从 GameLoader 导出的实例)构建的,仅在其实例中使用。

抱歉我的英语不好。

最佳答案

Perhaps the problem is cyclical references that point to a file GameLoader?

也许吧。尝试一下atom-typescript中的依赖 View https://github.com/TypeStrong/atom-typescript#dependency-view

关于javascript - 使用 requireJS 加载一些 typescript 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34601356/

相关文章:

javascript - ES6 代理不能是函数?

javascript - 如何通过 ajax 更新输入文本的值?

javascript - 在复选框限制后显示消息(多个实例)

javascript - RequireJs with moment.js 不触发 `init`

backbone.js - RequireJs - Backbone.Views 相互依赖

javascript - 如何以简单的方式将函数转换为 RequireJS 中的模块?

javascript - 以字节为单位的 base64 长度是多少?

node.js - 无法在使用Typescript构建的 Node 项目中运行Nodemon(在Windows中)

javascript - 如何在 Node.js 应用程序中包含 TypeScript 类?

typescript - 在 Typescript 中递归泛型?