我正在尝试向Array
类添加一个新方法(last
(。
这是我在我的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
的其他定义,所以现在我收到以下错误:
类型错误: 无法读取未定义的属性"长度">
如果我尝试访问任何数组的 length
属性,就会发生这种情况。
我如何正确实现此目的?声明是否必须单独进入文件?
您只需在导入/导出时扩充全局模块。
因为这不是您的情况,所以您只需要执行以下操作:
interface Array<T> {
last(): T;
}
也就是说,不要用declare global { ... }
包裹它.
此外,在实际实现中,不需要泛型,它可以/应该是:
if (!Array.prototype.last) {
Array.prototype.last = function(): any {
return this[this.length - 1];
}
}