0

クラスの 1 つのコンストラクター内から外部ライブラリ (EaselJs) を参照できるようにしたいと考えています。

export class GameCanvas {

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

        start(delay, callback) {
        }
    }

createjs何が何であるかがわからないため、これはコンパイルされません

コンストラクターに渡すことができました。しかし、このオブジェクトはオブジェクト グラフのかなり下にあるため、他の多くの呼び出しを経由する必要があります。

Typescriptコンパイラを満足させ、外部ライブラリのオブジェクトについて知らせる別の方法はありますか

ありがとう

4

3 に答える 3

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

于 2013-06-24T11:52:01.890 に答える
0

サードパーティの参照を提供するという点で、知っておく価値のある機能の 1 つは、ts ファイルの最初の行として次の行のようなものを含める場合です。

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

ここで、references.ts には特定の他の ts ファイルへの参照が含まれます。references.ts で指定されたファイルの場所は、上記の行を含む ts ファイルではなく、references.ts の場所に対して相対的です。

これは、たとえば、DT から取得したコードの 1 つのバージョンが特定のバージョンの jQuery または Knockout では機能しないなど、実装の切り替えなどを試してみたい場合に役立ちます。

于 2013-06-24T14:08:23.497 に答える
0

私は DefinetelyTyped プロジェクトからの参照を使用します (コンパイラーを満たすインターフェイスのみを宣言します)。

https://github.com/borisyankov/DefinitelyTyped/tree/master/easeljs
于 2013-06-24T11:53:07.763 に答える