typescript - 如何在 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 接口?
解决方案
推荐阅读
- javascript - 使用CSS重叠多个div?
- html - 如何消除div元素中的负空间?
- django - 在 django admin 中热禁用更改用户
- sql - 如何在 SQL 中分配重复增量?
- javascript - JavaScript for of 循环未迭代整个 HTMLCollection
- python - 为什么 Python 中的 OS 模块仅提供 Epoche Time 标准的输出?
- javascript - MailboxNotEnabledForRESTAPI 尝试从应用程序更新 Azure AD 中的用户配置文件图像时
- mongodb - Mongoose/Mongodb Aggregate - 对多个字段进行分组和平均
- javascript - React Hooks:无法在 useEffect 之外访问更新的 useState 变量?
- python - 如何减去具有重复第一列的两个数据框?