我正在尝试向last
类添加新方法(Array
)。
我正在test.ts
文件中执行此操作(已声明其他函数):
declare global {
interface Array<T> {
last(): T;
}
}
if (!Array.prototype.last) {
Array.prototype.last = function <T>(): T {
return this[this.length - 1];
}
}
然而这不起作用,因为它似乎完全抹去了Array
的其他定义所以现在我得到如下错误:
TypeError:无法读取属性&#39;长度&#39;未定义的
如果我尝试访问任何数组的length
属性,就会发生这种情况。
我如何正确实现这一目标?声明是否必须单独进入文件?
答案 0 :(得分:1)
您只需要在导入/导出时扩充全局模块。
因为这不是你的情况,你只需要这样做:
interface Array<T> {
last(): T;
}
也就是说,不要用declare global { ... }
包装它。
另外,在实际实现中,不需要泛型,它可以/应该是:
if (!Array.prototype.last) {
Array.prototype.last = function(): any {
return this[this.length - 1];
}
}