用requireJS加载一些typescript模块

loading some typescript modules with requireJS

本文关键字:typescript 模块 requireJS 加载      更新时间:2023-09-26

我在使用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();

相机是空对象(而不是函数)未捕获类型错误:相机不是函数文件已加载,但调试器显示其内容未被使用——函数定义中的断点不起作用。但在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导出的实例)只在它们的实例中使用。

抱歉我英语不好。

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

可能吧。试试atom typescript中的依赖关系视图https://github.com/TypeStrong/atom-typescript#dependency-查看

我用RequireJs射中了我的腿。我试图从共享模块返回实例的问题。每一个依赖都试图创造新的。所以第一次——在我的情况下——一些模块在加载其他deps阶段时错过了。