我在使用RequireJs连接一些打字稿类时遇到问题。 在.ts文件中我使用模块语法和AMD模块。我的主文件是GameLoader.ts,它返回游戏的一个实例。例如我在创造世界实例:
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();
相机是空对象(而不是函数) 未捕获TypeError:相机不是函数 文件已加载,但调试器显示其内容未使用 - 函数定义中的断点不起作用。但是在加载主程序之前触发了世界断点。
发现错误我试图从Camera.ts中删除所有内容。 删除之后,我以相同的方式从另一个文件(temp.ts)调用空Camera:
import c = require('Resources/Scripts/Game/Presentation/Camera/Camera');
var cam = new c();
console.log(cam);
并且有效。
在两种情况下由编译器(对于Camera.js)生成的Ts代码看起来都是一样的。 使用相同的方式调用编译文件 - 通过调用RequireJs API。
也许问题是指向文件GameLoader的循环引用? 但我的应用程序构建的游戏(从GameLoader导出的实例)只在他们的实例中使用。
抱歉我的英语不好。
答案 0 :(得分:1)
也许问题是指向文件GameLoader的循环引用?
可能。将atom-typescript中的依赖关系视图设为go https://github.com/TypeStrong/atom-typescript#dependency-view
答案 1 :(得分:0)
我用RequireJs在腿上射击。我试图从共享模块返回实例的问题。每一个依赖都试图创造新的。因此,在我第一次 - 在我的情况下 - 一些模块错过了其他deps阶段。