首页 > 解决方案 > 如何在 Typescript 中应用定义多个构造函数的接口?

问题描述

我一直在寻找一种方法来实现一个类的多个构造函数。我发现这个关于构造函数重载的 Stackoverflow 问题,第一个答案解释说您可以在一个类中定义多个构造函数,然后提供一个处理所有情况的通用构造函数。

但是,我一直在 lib.es5.d.ts 中窥探,看看他们是如何使用 Array 实现的。我在那里找到了这个界面:

interface ArrayConstructor {
    new(arrayLength?: number): any[];
    new <T>(arrayLength: number): T[];
    new <T>(...items: T[]): T[];
    (arrayLength?: number): any[];
    <T>(arrayLength: number): T[];
    <T>(...items: T[]): T[];
    isArray(arg: any): arg is any[];
    readonly prototype: any[];
}

declare var Array: ArrayConstructor;

然后我在其他 es5 文件中看到他们可以这样做

const array = new Array();
const array = new Array(4);
const array = new Array([{ id: 5 }]);

所以我希望某处有一些代码,例如

class Array {
    constructor() {

    }
}

定义构造函数实现的地方。但是当然,Array 已经被声明为全局“var”,所以你不能用它创建一个类(我用我自己的类和构造函数接口尝试了这个)。

那么,如果您无法创建类并实现这些构造函数,那么如何在接口中应用声明的构造函数呢?他们如何能够执行“new Array(input)”并应用此 ArrayConstructor 接口?

标签: typescriptconstructorconstructor-overloading

解决方案


推荐阅读