使用模块进行TypeScript转换

Lor*_*eck 0 casting module node.js typescript

如何使用导出的类转换变量的类型?比如这样:

GameManager.ts:

export class GameManager {}
Run Code Online (Sandbox Code Playgroud)

Player.ts:

private _manager: GameManager;
Run Code Online (Sandbox Code Playgroud)

当我使用a时/// <reference path="GameManager.ts" />,我得到一个错误,说GameManager超出范围或类似的东西.这是如何工作的?

Rya*_*ugh 5

这里有几种情况,具体取决于export class GameManager {}线的位置:

选项1:您正在使用"外部"模块(即您export在顶层有任何声明).

在这种情况下,您应该删除reference标记,而是写:

import Manager = module("GameManager"); // N.B. this is the filename, not the class name
...
private _manager: Manager.GameManager;
Run Code Online (Sandbox Code Playgroud)

选项2:您正在使用"内部"模块(即您export classmodule块内,但不是export module块)

在这种情况下,你应该保留你的/// <reference...标签并写下:

private _manager: MyGame.Manager; // N.B. Assuming here that 'GameManager' lives inside 'module MyGame { ... }'
Run Code Online (Sandbox Code Playgroud)

可能你实际上并不想要export你班上的关键词 - 如果你这样做,你根本不需要对它进行限定(假设在顶层没有其他东西被导出).