我正在使用TypeScript和require.js来解析文件中的依赖项。我想在其他文件中引用类的静态字段,但是在同一个内部模块(同一文件夹)中并且我无法访问它,即使Visual Studio预编译器确实如此我的代码中没有显示任何错误。 我有以下情况:
Game.ts
class Game {
// ...
static width: number = 1920;
// ...
}
export = Game;
Launcher.ts
/// <reference path='lib/require.d.ts'/>
import Game = require("Game");
var width: number = Game.width;
console.log(width); // Hoping to see "1920"
TypeScript编译器可以满足所有这些要求。但是,在运行编译的Launcher.ts时,我一直在执行时“未定义”。 这是我在项目中遇到的唯一参考问题,所以我猜其余部分配置正确。
我希望我提供了所有必要的信息,如果您需要更多信息,请询问
感谢任何帮助,谢谢!
答案 0 :(得分:0)
如果您使用require.js加载(外部)模块,则必须导出Game类:
export class Game {}
如果您在Launcher.ts中导入游戏,例如
import MyGame = require('Game')
可以使用MyGame.Game
引用类,使用MyGame.Game.width
您应该使用选项--module amd
或Visual Studio中的等效选项使用tsc编译ts文件
答案 1 :(得分:0)
您的代码看似合理,请检查以下内容......
您在页面上的脚本标记中引用require.js
,指向Launcher
(假设Launcher.ts
位于根目录中 - 根据需要进行调整:
<script src="Scripts/require.js" data-main="Launcher"></script>
从reference
Launcher.ts
条评论
import Game = require("Game");
var width: number = Game.width;
console.log(width); // Hoping to see "1920"
检查您是否正在使用--module amd
进行编译,以确保它生成正确的模块加载代码(您的JavaScript输出将如下所示)。
define(["require", "exports", "Game"], function (require, exports, Game) {
var width = Game.width;
console.log(width); // Hoping to see "1920"
});
如果您使用的是Visual Studio,则可以在Project > Properties > TypeScript Build > Module Kind (AMD)