在 TypeScript 中向类型化数组添加方法
Posted
技术标签:
【中文标题】在 TypeScript 中向类型化数组添加方法【英文标题】:Add method to typed arrays in TypeScript 【发布时间】:2017-11-14 00:59:41 【问题描述】:如何向类型化数组添加方法,例如Array<MyClass>
?
假设您有一个类型化数组,在这种情况下,提供一个属性/方法来通过访问数组的所有项来计算一个值可能是有意义的。
class Foo
date: Date
class FooArray extends Array<Foo>
dateInterval()
// Some algorithm that iterates over all dates to find
// min/max
return this.reduce(..)
但有件事告诉我,我走错了路。例如,FooArray.splice()
返回类型 Foo[]
,而不是 FooArray
,这对我来说完全有意义。
谁能指出我正确的方向?
【问题讨论】:
【参考方案1】:我会为你提供 2 个选项
选角
只需显式添加拼接方法以覆盖继承的方法以返回您的首选类型,并使用强制转换
splice()
let arr = super.splice();
return new FooArray(arr); // or some other way of casting
或者,包装
包装
class FooArray
constructor(private arr: Foo[]) /* maybe copy the array...? */
splice(start: number, end?: number)
return new FooArray(this.arr.splice(start, end));
这样你必须明确你公开的内容,而不是混合继承的基类的方法,这些方法将返回普通数组。任君挑选。
【讨论】:
谢谢,我希望有一些魔力,但明确暴露的内容可能只是要走的路。以上是关于在 TypeScript 中向类型化数组添加方法的主要内容,如果未能解决你的问题,请参考以下文章
更改(映射)JSON列表形状 - 在TypeScript中向对象添加标记