首先,这个问题是在使用 Three.js 之后首次出现的,我曾尝试/尝试为我自己的库构建接口(interface)。
无论如何,假设我们有 JS 代码:
var foo = new THREE.Vector3(0,0,0);
在 TypeScript 中,您可以将三个对象表示为:
interface IThreeJS {
Vector3(x: number, y: number, z: number): any;
}
declare var THREE: IThreeJS;
但是如您所见,我们从 Vector3 返回了 ': any'。如果我创建一个 IVector3 接口(interface)并尝试执行“new THREE.Vector3(0,0,0): IVector3”,我们会得到一个“关于有效构造函数的新表达式”。因此必须返回 'any'
现在唯一的选择是让 IThreeJS 的 Vector3 对象返回 'any' 并执行:
var foo: IVector3 = new THREE.Vector3(0,0,0);
那么,有没有办法让我的 IThreeJS 接口(interface)的 Vector3 方法有一个构造函数并返回一个 IVector3?
最佳答案
你也可以声明类和模块:
declare module THREE {
export class Vector3 {
constructor(x: number, y: number, z: number);
}
}
关于用于 "new"对象的 TypeScript 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13404726/