TypeScriptブランチでコンパイルしています(ここthree.d.ts
から入手可能)。次のエラーが表示されます。develop
Types of static property 'Utils' of class 'THREE.Shape' and class 'THREE.Path'
are incompatible
問題はそれです
Shape
Utils
静的クラスを定義しますShape
~を間接的に継承するCurve
Curve
Utils
とは関係のない署名を持つ静的クラスも定義しますShape.Utils
言語仕様によると、これは形式が正しくありません。要約するとthree.d.ts
、次のコードのようなものが含まれています。
declare class A {
static Utils: {
f (): any;
}
}
declare class B extends A {
static Utils: {
// incompatible with A.Utils, without f(): any
g (): any;
}
}
なぜ静的メンバーの型が同じ名前の継承された静的メンバーの型と互換性がなければならないのかという問題はさておき - これは他のいくつかの OO 言語では当てはまらないが、TypeScript ではそうであるように見える -three.d.ts
コンパイルできるように修正する方法を知りたいです。
Curve.Utils
私の現在の回避策は、 の署名をにコピーして貼り付け、Shape.Utils
後者が前者を構造的に拡張することです。three.js
しかし、ファイル内の基になるファイル ( here )の署名をキャプチャする「正しい」方法は何.d.ts
ですか? これは継承が間違って使用されている場合ですか?