相关疑难解决方法(0)

扩展本机JavaScript数组

有没有办法从JS本机函数继承一个类?

例如,我有一个像这样的JS函数:

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

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

export class Xarray implements Array {
}
Run Code Online (Sandbox Code Playgroud)

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

如何在TS中扩展JS本机对象?

javascript typescript

30
推荐指数
4
解决办法
3万
查看次数

从 Typescript 1.6.2 中的内置数组扩展的类在使用 [] 运算符时不会更新长度

正如我在此处阅读的那样,应该可以在 ts 1.6 中扩展内置类型:

TypeScript 1.6 添加了对扩展计算构造函数的任意表达式的类的支持。这意味着现在可以在类声明中扩展内置类型。

...

一些例子:

// Extend built-in types

class MyArray extends Array<number> { }
class MyError extends Error { }

...
Run Code Online (Sandbox Code Playgroud)

但是,在扩展 Array 时,使用 [] 运算符设置值时不会更新长度属性。推送功能工作正常,但我需要 [] 运算符。

我的例子:

class ExtendedArray<T> extends Array<T> {}

var buildinArray = new Array<string>();
var extendedArray = new ExtendedArray<string>();

buildinArray.push("A");
console.log(buildinArray.length); // 1 - OK
buildinArray[2] = "B";
console.log(buildinArray.length); // 3 - OK

extendedArray.push("A");
console.log(extendedArray.length); // 1 - OK
extendedArray[2] = "B";
console.log(extendedArray.length); // 1 - FAIL
console.dir(extendedArray); …
Run Code Online (Sandbox Code Playgroud)

javascript extends typescript

3
推荐指数
1
解决办法
959
查看次数

标签 统计

javascript ×2

typescript ×2

extends ×1