用于"new"对象的 TypeScript 接口



首先,这个问题是在使用Three.js后首次出现的,在Three.js中,我试图为库构建接口。

无论如何,假设我们有JS代码:

var foo = new THREE.Vector3(0,0,0);

在TypeScript中,您可以将THREE对象表示为:

interface IThreeJS {
Vector3(x: number, y: number, z: number): any;
}
declare var THREE: IThreeJS;

但是,正如您所看到的,我们从Vector3返回了":any"。如果我创建一个IVector3接口并尝试执行"new THREE"。Vector3(0,0,0):IVector3"我们在构造函数上获得一个有效的新表达式"。因此必须返回"任何">

现在唯一的选择是让Vector3对象从IThreeJS中退出,返回"any"并执行:

var foo: IVector3 = new THREE.Vector3(0,0,0);

那么,有没有让IThreeJS接口的Vector3方法有一个构造函数并返回一个IVector3?

您也可以声明类和模块:

declare module THREE {
export class Vector3 {
constructor(x: number, y: number, z: number);
}
}
export class Vector3 {
x: number;
y: number;
z: number;

constructor(x, y , z) {
this.x = x;
this.y = y;
this.z = z;
}
}

const position=new Vector3(0,0,0);

祝你好运

最新更新