У меня возникла проблема с подключением некоторых классов типов с использованием RequireJs. В файлах .ts я использую синтаксис модулей и модули AMD. И мой основной файл - GameLoader.ts, который возвращает экземпляр игры. Там, например, я creaiting World экземпляр:Загрузка некоторых типов машинописных модулей с requireJS
import World = require('Resources/Scripts/Game/Entities/Game/World');
...
var world = new World(json.world.level, json.world.size, json.world.passMap);
и она отлично работает - World действительно нужную функцию
Но в то же тот же файл (GameLoader.ts):
import Camera = require('Resources/Scripts/Game/Presentation/Camera/Camera');
...
var camera = new Camera();
Камера - пустой объект (вместо функции)Uncaught TypeError: Камера не является функцией Файл загружен, но отладчик показал, что его содержимое a re not used - точка останова в определении функции не работает. Но в мировой точке останова запускается до загрузки основной программы.
Обнаружение ошибки Я попытался удалить все вещи с Camera.ts. После удаления я назвал пустую камеру таким же образом из другого файла (temp.ts):
import c = require('Resources/Scripts/Game/Presentation/Camera/Camera');
var cam = new c();
console.log(cam);
, и она работала.
Ts-сгенерированный код с помощью компилятора (для Camera.js) в обоих случаях выглядит одинаково. Для вызова скомпилированных файлов используется тот же путь - по вызову RequireJs API.
Возможно, проблема связана с циклическими ссылками, указывающими на файл GameLoader? Но мое приложение, построенное из классов, игра которых (экземпляр которого экспортируется из GameLoader) используется только в их экземплярах.
Извините за мой плохой английский.
Имеет ли камера функцию определения и возвращает ли она правильный объект? – rainerhahnekamp
Да. Camera.js начинается с функции определения. Она возвращает ref на функцию камеры (класс в TS). Но почему-то в GameLoader это просто пустой объект. –