有没有办法从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本机对象?
正如我在此处阅读的那样,应该可以在 ts 1.6 中扩展内置类型:
TypeScript 1.6 添加了对扩展计算构造函数的任意表达式的类的支持。这意味着现在可以在类声明中扩展内置类型。
...
一些例子:
Run Code Online (Sandbox Code Playgroud)// Extend built-in types class MyArray extends Array<number> { } class MyError extends Error { } ...
但是,在扩展 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)