3

まず、この質問は、Three.jsを使用して、自分のためにライブラリのインターフェイスを構築しようとした後に最初に発生しました。

とにかく、JSコードがあるとしましょう:

var foo = new THREE.Vector3(0,0,0);

TypeScriptでは、3つのオブジェクトを次のように表すことができます。

interface IThreeJS {
    Vector3(x: number, y: number, z: number): any;
}

declare var THREE: IThreeJS;

ただし、ご覧のとおり、Vector3から':any'が返されます。IVector3インターフェイスを作成し、「new THREE.Vector3(0,0,0):IVector3」を実行しようとすると、「コンストラクターで有効な新しい式」が取得されます。したがって、「any」を返す必要があります

現在のところ、唯一の代替手段は、IThreeJSのVector3オブジェクトに「any」を返して次のことを行うことです。

var foo: IVector3 = new THREE.Vector3(0,0,0);

それで、とにかく私のIThreeJSインターフェイスのVector3メソッドにコンストラクターを持たせてIVector3を返すことはありますか?

4

2 に答える 2

6

クラスとモジュールも宣言できます。

declare module THREE {
    export class Vector3 {
        constructor(x: number, y: number, z: number);
    }
}
于 2012-11-15T19:53:00.933 に答える
0
export class Vector3 {

  x: number;
  y: number;
  z: number;


  constructor(x, y , z) {
    this.x = x;
    this.y = y;
    this.z = z;
  }

}

const position = new Vector3(0、0、0);

幸運を

于 2018-06-08T21:23:23.997 に答える