2014-06-11 67 views
1

如果我有兩個打字稿文件,比方說a.ts和b.ts a.ts內容是:崇高打字稿

export class A { 
    greet():void{ 
     console.log("hi"); 
    } 
} 

b.ts內容是:

export class B { 
    constructor(){ 
     var a:A=new A(); 
     a.greet(); 
    } 
} 

new B(); 

我想編譯與https://github.com/Railk/T3S和/或https://github.com/lavrton/sublime-better-typescript

的問題,這些文件是,如果我編譯文件b.ts,無法看到文件a.ts是否我添加a.ts項目或沒有。 所以,我寫了一個文件的compile.bat(我用它作爲構建系統),它收集的文件轉換成一個txt,然後我用命令如下:

dir DIRECTORY\*.ts /b /s > DIRECTORY\ts-files.txt 
tsc @DIRECTORY\ts-files.txt --outDir OUTPUT_DIRECTORY 

它的偉大工程(全js文件編譯得很好),但是當我在編輯器中看到源代碼時,它仍然無法識別其他文件中的引用。

所以,我有一個buld-system,它工作的很棒。如果我使用T3S,它的效果很好,但只有一個文件,沒有任何外部參考。

我怎樣才能解決這個問題?

+2

是否使用參考意見幫助解決你的問題 - 它告訴編譯器在哪裏尋找依賴關係:'/// ' – Fenton

+0

是的它可以解決這個問題。有趣的是,當我使用webstorm時,它不需要引用註釋。 – mudlee

+0

WebStorm和Visual Studio都自動掃描項目文件 - 這是一個額外的IDE功能,而不是一個直接的TypeScript編譯器功能:) – Fenton

回答

0

當項目增長時,通常會得到循環依賴/參考:A參考B其中引用C其中引用A ...

我們發現這是寫一個單一的定義文件的唯一方法,說definitions.d.ts,它引用所有打字稿文件

///<reference path="A.ts" /> 
///<reference path="B.ts" /> 
///<reference path="C.ts" /> 

然後,在每個打字稿文件中,有一個參考definitions.d.ts

///<reference path="definitions.d.ts" /> 

編輯

作爲替代,移動到require:爲CommonJS的「風格」,使用tsc標誌

--module commonjs 

,並在打字稿文件,import資源

import A = require('./A') //no .ts in the name 
+0

謝謝,我想這就是我想嘗試的方式! – mudlee

0

並非所有的集成開發環境都能自動掃描TypeScript文件。

Visual Studio和WebStorm將把該項目作爲含蓄地提及的所有文件(這本身有時會造成問題,如果你想引用文件 - 但大部分的時間,它是一個非常有用的功能) 。

這些IDE之外,需要提供參考註釋:

///<reference path="a.ts" /> 

例如,如果要手動從命令行運行或使用運行命令的工具。