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

Module 引用一个类';相同内部模块的静态字段,但在不同的文件中?,module,static,typescript,internal,Module,Static,Typescript,Internal,我正在使用TypeScript和require.js来解析文件中的依赖项。我所处的情况是,我希望引用其他文件中某个类的静态字段,但该字段位于同一内部模块(同一文件夹)中,并且我无法访问它,即使Visual Studio预编译器在我的代码中没有显示任何错误。 我有以下情况: 游戏。ts class Game { // ... static width: number = 1920; // ... } export = Game; /// <reference pat

我正在使用TypeScript和require.js来解析文件中的依赖项。我所处的情况是,我希望引用其他文件中某个类的静态字段,但该字段位于同一内部模块(同一文件夹)中,并且我无法访问它,即使Visual Studio预编译器在我的代码中没有显示任何错误。 我有以下情况:

游戏。ts

class Game {
    // ...
    static width: number = 1920;
    // ...
}
export = Game;
/// <reference path='lib/require.d.ts'/>
import Game = require("Game");

var width: number = Game.width;
console.log(width); // Hoping to see "1920"
Launcher.ts

class Game {
    // ...
    static width: number = 1920;
    // ...
}
export = Game;
/// <reference path='lib/require.d.ts'/>
import Game = require("Game");

var width: number = Game.width;
console.log(width); // Hoping to see "1920"
//
导入游戏=需要(“游戏”);
变量宽度:number=Game.width;
console.log(宽度);//希望看到“1920”
TypeScript编译器可以处理所有这些。但是,在运行编译后的Launcher.ts时,我在执行时不断得到“undefined”。 这是我在项目中遇到的唯一一个参考问题,所以我想其余的配置是正确的

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


感谢您的帮助,谢谢

如果使用require.js加载(外部)模块,则必须导出游戏类:

export class Game {}
如果你在Launcher.ts中导入游戏,就像

import MyGame = require('Game')
该类可以用
MyGame.Game
引用,静态变量可以用
MyGame.Game.width


您应该使用选项
--module amd
或Visual Studio中的等效选项使用tsc编译ts文件,因为您的代码看起来不错,所以请检查以下内容

您正在页面上的脚本标记中引用
require.js
,指向
Launcher
(假设
Launcher.ts
位于根目录中-根据需要调整:

<script src="Scripts/require.js" data-main="Launcher"></script>
检查您是否正在使用
--module amd
进行编译,以确保它生成正确的模块加载代码(您的JavaScript输出如下所示…)


如果您使用的是Visual Studio,则可以在
Project>Properties>TypeScript Build>Module Kind(AMD)中进行设置

谢谢,但这让我意识到我并没有写我已经导出了类。我只是用以下行编辑了我的帖子:
export=Game;
,您确定您使用
Game.Game.width
引用了
width
?尝试引用Game。Game会使预编译器报告错误:Game属性不存在如果在Launcher.ts中的import语句之后插入console.log(Game),结果是什么?下面是我得到的:
function Game(){}
是的,我正在引用您描述的
require.js
方式。我从
Launcher.ts
中删除了
reference
,没有任何更改;看起来它实际上是不必要的。我检查并确认我正在Visual Studio中使用AMD模块。不过,Launcher.ts的编译版本没有显示静态变量的痕迹ble:
定义([“需要”、“导出”、“游戏”],函数(需要、导出、游戏){console.log(游戏);});
console.log(游戏宽度)
而不是
console.log(游戏)
对吗?我确实犯了一个错误,试图记录
游戏
而不是
游戏。宽度
。日志
游戏
显示了一个空对象,但现在日志
游戏。宽度
实际起作用,并显示了1920。我正在试图找出这是什么原因。