まず、この質問は、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を返すことはありますか?