3

CreateJS ( www.createjs.com ) の TypeScript 宣言ファイルを作成しようとしています。

次のような基本クラス宣言があります。

/// <reference path="../geom/Point.d.ts"/>
/// <reference path="../geom/Rectangle.d.ts"/>
/// <reference path="../geom/Matrix2D.d.ts"/>
/// <reference path="../filters/Filter.d.ts"/>
/// <reference path="Shadow.d.ts"/>
/// <reference path="Shape.d.ts"/>
/// <reference path="Stage.d.ts"/>

declare module createjs {
  class DisplayObject {

    // constructor:
    constructor();

    ... additional methods

  }
}

次に、DisplayObject から派生したクラスをさらに宣言します。

/// <reference path="DisplayObject.d.ts"/>
declare module createjs {
      class Bitmap extends DisplayObject{
        constructor (imageOrUri:any);

        ... additional methods

      }
    }


   /// <reference path="DisplayObject.d.ts"/>
   declare module createjs {
      class Container extends DisplayObject{
        constructor();

        ... additional methods

      }
    }

    /// <reference path="../../tweenjs/Timeline.d.ts"/>
    /// <reference path="DisplayObject.d.ts"/>
    /// <reference path="Container.d.ts"/>
    declare module createjs {
      class MovieClip extends Container{
        constructor (mode: string, startPosition: number, loop: bool, labels: any);

        ... additional methods

      }
    }

などなど

しかし、私は常に次のようなコンパイラエラーを受け取ります:

ベース タイプ 'DisplayObject' が宣言前に参照されているか、ベース タイプ 'Container' が宣言前に参照されています。

何が間違っているのかわかりません。すべて問題ないようです。どんな助けでも本当に感謝しています...前もって感謝します!

4

1 に答える 1

5

コードが複数のファイルに分割されている場合は、参照を使用して、開発ツールとコンパイラに他のファイルについて通知する必要があります。

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

Visual Studioでこれをテストしたところ、最初のコードブロックがと呼ばれるファイルにあると仮定すると、エラーがクリアされたようcreatejs.tsです。これを2番目のファイルの先頭に追加します。

それらがすべて指定した順序で同じファイルにある場合、それはすべて私のために機能します。

アップデート

次のファイルを使用してVisualStudioプロジェクトを作成しましたが、すべて機能します。コードがフォルダーに整理されている可能性があります。その場合は、次のような相対パスを使用する必要があります。

/// <reference path="./createjs/DisplayObject.d.ts" />

とにかく、これが空のプロジェクトでの私のワーキングセットです:

DisplayObject.d.ts

declare module createjs {
    class DisplayObject {
        // constructor:
        constructor ();
    }
}

Bitmap.d.ts

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

declare module createjs {
    class Bitmap extends DisplayObject {
        constructor (imageOrUri: any);
    }
}

Container.d.ts

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

declare module createjs {
    class Container extends DisplayObject {
        constructor ();
    }
}

そして、すべてが幸せです。exportキーワードはすべて同じモジュールにあるため、キーワードは必要ありません。

例を表示したい場合は、これをどこかに圧縮してください。

于 2012-10-22T22:39:15.050 に答える