3

首先,这个问题是在使用 Three.js 之后首先出现的,我为了自己的缘故尝试/尝试为库构建接口。

无论如何,假设我们有 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 接口并尝试执行“new THREE.Vector3(0,0,0): IVector3”,我们会得到一个“构造函数上有效的新表达式”。因此必须返回“任何”

现在唯一的选择是让 IThreeJS 的 Vector3 对象返回 'any' 并执行以下操作:

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

那么,无论如何让我的 IThreeJS 接口的 Vector3 方法有一个构造函数并返回一个 IVector3?

4

2 回答 2

6

你也可以声明类和模块:

declare module THREE {
    export class Vector3 {
        constructor(x: number, y: number, z: number);
    }
}
于 2012-11-15T19:53:00.933 回答
0
export class Vector3 {

  x: number;
  y: number;
  z: number;


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

}

常量位置 = 新 Vector3(0, 0, 0);

祝你好运

于 2018-06-08T21:23:23.997 回答