TypeScriptブランチでコンパイルしています(ここthree.d.tsから入手可能)。次のエラーが表示されます。develop
Types of static property 'Utils' of class 'THREE.Shape' and class 'THREE.Path'
are incompatible
問題はそれです
ShapeUtils静的クラスを定義しますShape~を間接的に継承するCurveCurveUtilsとは関係のない署名を持つ静的クラスも定義します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ですか? これは継承が間違って使用されている場合ですか?