引用同一内部模块但在不同文件中的类'静态字段?

时间:2014-11-25 11:36:32

标签: module static typescript internal

我正在使用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时,我一直在执行时“未定义”。 这是我在项目中遇到的唯一参考问题,所以我猜其余部分配置正确。

我希望我提供了所有必要的信息,如果您需要更多信息,请询问

感谢任何帮助,谢谢!

2 个答案:

答案 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)

中进行设置