用于 "new"对象的 TypeScript 接口(interface)

标签 typescript

首先,这个问题是在使用 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/

相关文章:

TypeScript 建议对象中的键

typescript - 为什么抽象类必须实现接口(interface)中的所有方法?

使用保留关键字的 typescript 定义文件

typescript - 如何通过 Ionic 4 选项卡按钮传递参数

typescript - 在 Typescript 中使用自定义键展平对象

javascript - 将 Nest.js 应用程序导入为简单的 Express 中间件

javascript - RxJS 6 获取 Observable 数组的过滤列表

javascript - Object.assign {} 和 Object.Assign [] 有区别吗

node.js - 如何在 inversify 中注入(inject)异步依赖?

typescript - vuejs typescript 属性路由器不存在