嗨!Typescript內部模塊 - 無法在同一模塊內引用導出的類
首先,對不起,如果之前有人問過,我嘗試了一些谷歌搜索,但無法找到任何東西(至少沒有我認爲是同一個問題)。我是新手稿,所以仍然要抓緊!
我正在做一個小遊戲作爲一個項目來刷新我的JavaScript,並決定使用Typescript,因爲它似乎很適合模塊化我的應用程序。它全部運行在節點服務器上 - 如果需要,我可以提供版本號!
我有兩個文件,player.ts和scene.ts,這些都屬於同一個模塊(他們是我的計劃的一部分,但我想他們分手了模塊化的緣故):
player.ts
module TheGame {
export class Player {
name: string;
constructor(name: string) {
this.name = name;
}
}
}
scene.ts
///<reference path="player.ts"/>
///<reference path="../typings/threejs/three.d.ts"/>
import jquery = require("three");
module TheGame {
export class Scene {
player: any;
constructor() {
this.player = new Player('test');
}
//Use of Three throughout file
}
}
這兩個文件都在同一個文件夾,當我嘗試對它們進行編譯:
tsc player.ts scene.ts --module commonjs
我得到的錯誤:
testscene.ts(10,22): error TS2095: Could not find symbol 'Player'.
如果我刪除了參考和導入到三,這編譯罰款,但顯然我需要在課堂上使用三。 (在播放器類中也需要三個,可能更晚一些)看起來它實際上編譯JS文件,即使有錯誤,我不知道爲什麼。
我不理解這是如何工作的?
使用外部模塊和內部 模塊有一些限制嗎?
有沒有一種方法來導入所有的外部類我的應用程序 需求(三,socket.io等),在它自己的TS文件,使這項工作, 如果這是一個解決方案?
在此先感謝!
回答說:
的解決方案是,使用CommonJS的,你需要明確的出口和進口,並採用模塊並沒有真正意義(感謝@ssube和@BGR的解決方案)。
工作代碼:
球員。TS
export class Player {
name: string;
constructor(name: string) {
this.name = name;
}
}
export = Player;
scene.ts
///<reference path="../typings/threejs/three.d.ts"/>
import jquery = require("three");
import Player = require("./player");
class Scene {
player: Player;
constructor() {
this.player = new Player('test');
}
//Use of Three throughout file
}
export = Scene;
太棒了!這工作,但我必須改變require('./ Player')require('./ player') - 我猜這只是引用.ts文件的名稱(不帶.ts)? –
是的:它是不帶ts擴展名的.ts文件的名稱 –
非常感謝您的幫助,現在就開始工作。標記爲答案 –