gpt4 book ai didi

javascript - 扩展原生 JavaScript 数组

转载 作者:IT王子 更新时间:2023-10-29 03:20:03 26 4
gpt4 key购买 nike

有什么方法可以从JS原生函数继承一个类吗?

比如我有一个这样的JS函数:

function Xarray()
{
Array.apply(this, arguments);
//some stuff for insert, add and remove notification
}
Xarray.prototype = new Array();

我试图将它转换为 Typescript,但我失败了!!

export class Xarray implements Array {
}

编译器要求我定义所有 Array 接口(interface)属性。我知道如果我需要这个 Xarray.prototype = new Array();,我必须在 TS 中扩展 Array

如何在TS中扩展JS原生对象?

最佳答案

从 TypeScript 1.6 开始,您可以扩展 Array 类型,参见 What's new in TypeScript

这是一个例子:

class MyNewArray<T> extends Array<T> {
getFirst() {
return this[0];
}
}

var myArray = new MyNewArray<string>();
myArray.push("First Element");
console.log(myArray.getFirst()); // "First Element"

如果您发射到 ES5 或更低版本,请使用以下代码:

class MyNewArray<T> extends Array<T> {
constructor(...items: T[]) {
super(...items);
Object.setPrototypeOf(this, MyNewArray.prototype);
}

getFirst() {
return this[0];
}
}

阅读更多关于为什么这是必要的 here .

关于javascript - 扩展原生 JavaScript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14000645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com