我正在使用 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
into的签名Shape.Utils
,以便后者在结构上扩展前者。但是在文件中捕获基础three.js
文件(此处)签名的“正确”方法是.d.ts
什么?这是不正确使用继承的情况吗?