使用requireJS加载一些打字稿模块

时间:2016-01-04 22:53:09

标签: javascript typescript requirejs js-amd

我在使用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导出的实例)只在他们的实例中使用。

抱歉我的英语不好。

2 个答案:

答案 0 :(得分:1)

  

也许问题是指向文件GameLoader的循环引用?

可能。将atom-typescript中的依赖关系视图设为go https://github.com/TypeStrong/atom-typescript#dependency-view

答案 1 :(得分:0)

我用RequireJs在腿上射击。我试图从共享模块返回实例的问题。每一个依赖都试图创造新的。因此,在我第一次 - 在我的情况下 - 一些模块错过了其他deps阶段。