2013-06-24 133 views
0

我希望能夠從我的一個類的構造函數中引用外部庫(EaselJs):參考其他圖書館

export class GameCanvas { 

     private stage; 
     constructor() { 
      this.stage = new createjs.Stage("canvasElementId"); // this doesn't compile 
     } 

     start(delay, callback) { 
     } 
    } 

這將無法編譯,因爲它不知道什麼createjs

我可以將它傳遞給構造函數。但是這個對象是一個相當一路下滑的對象圖,因此就需要通過大量的其他呼叫

前來有另一種方法可以讓我滿足打字稿編譯器,並使其瞭解外部庫對象

感謝

+0

檢查了這個http://stackoverflow.com/questions/15865465/cant-get-references-to-work-with-typescriptcript –

回答

2

快速/骯髒的解決方案:創建createjs聲明:

declare var createjs; 
export class GameCanvas { 

     private stage; 
     constructor() { 
      this.stage = new createjs.Stage("canvasElementId"); // this doesn't compile 
     } 

     start(delay, callback) { 
     } 
    } 

更好的解決方案。使用由社區創建的聲明爲您提供:https://github.com/borisyankov/DefinitelyTyped

對於EaselJS:https://github.com/borisyankov/DefinitelyTyped/blob/master/easeljs/easeljs.d.ts

使用範例:https://github.com/borisyankov/DefinitelyTyped/blob/master/easeljs/easeljs-tests.ts

+0

看起來像畫架取決於tweenjs,並有一些錯誤:( – ChrisCa

+0

U罐使用簡單的聲明進行快速修復 – basarat

+0

@chicca這些錯誤已經修復了很長一段時間:) – basarat

0

我使用DefinetelyTyped項目引用(他們宣稱只是接口,該接口滿足編譯器)。

https://github.com/borisyankov/DefinitelyTyped/tree/master/easeljs 
+0

看起來像畫架取決於tweenjs,並且它有一些錯誤:( – ChrisCa

0

在提供第三方的條款引用一個特點值得了解的是,如果你有類似下面的線路上,TS文件的第一行:

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

其中references.ts包括引用對特定的其他ts文件,references.ts中指定的文件的位置與references.ts的位置有關,而不是包含上述行的ts文件。

如果您想要使用切換實現之類的東西,比如從DT獲取的代碼版本不適用於特定版本的jQuery或Knockout,這會很有幫助。