2012-11-15 25 views
3

首先,在使用Three.js后,此问题首先出现,我尝试/试图为我自己创建库的接口。用于“新”对象的TypeScript接口

不管怎么说,让我们说我们有JS代码:

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

在打字稿,你可以代表三个对象:

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

declare var THREE: IThreeJS; 

但是你可以看到我们有“:任何”返回从Vector3。如果我创建了一个IVector3接口并尝试执行'new THREE.Vector3(0,0,0):IVector3',我们就得到了一个'对构造函数有效的新表达式'。因此,不必返回“任何”

现在唯一的选择是让的Vector3对象关IThreeJS回报“任意”,做:

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

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

回答

5

可以声明类和模块也:

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

噢,是的,如果我从头开始构建库,这将是一个合适的解决方案。我指的是创建一个接口,该接口位于已经在JavaScript中完成的已有库中。这是为了在我的TypeScript应用程序中更轻松地使用JS库。 –

+3

这就是Steve的代码所做的。 'declare'关键字的意思是“我正在描述在别处实现的对象” –

+0

是的 - 对不起,我没有在答案中说清楚。 – Fenton