Typescript:使用数组表示法从类中获取项
我有一个名为Typescript:使用数组表示法从类中获取项,typescript,typescript2.4,Typescript,Typescript2.4,我有一个名为Candles的类和一个名为Candle的类蜡烛有一个属性列表,其中包含一个蜡烛数组 class Candles { public list: Array<Candle>; } class Candle { public date: number; public high: number; public low: number; public open: number; public close: number; public volume:
Candles
的类和一个名为Candle
的类<代码>蜡烛有一个属性列表
,其中包含一个蜡烛
数组
class Candles
{
public list: Array<Candle>;
}
class Candle
{
public date: number;
public high: number;
public low: number;
public open: number;
public close: number;
public volume: number;
}
我想要蜡烛[3]
返回蜡烛。列表[3]
我还想用地图。例如:
candles.map(function(candle: Candle) {
console.log(candle.high);
});
您需要的是运算符重载。Typescript不支持它 您可以在github问题线程中了解更多关于这种情况的原因:
您需要的是运算符重载。Typescript不支持它 您可以在github问题线程中了解更多关于这种情况的原因:
您无法更改Typescript中索引操作的行为,因为Javascript也不支持此操作。您可以做的是创建一个类型taht扩展标准数组,如本文所述,您不能更改Typescript中索引操作的行为,因为Javascript也不支持此操作。您可以创建一个扩展标准数组的类型taht,如本中所述。您可以使用ES6拦截并转发对内部列表的调用: 要通知编译器,
蜡烛
可以用作数组
请添加以下定义:
interface Candles extends Array<Candle> { }
在操场上。您可以使用ES6拦截呼叫并将呼叫转发到内部列表: 要通知编译器,
蜡烛
可以用作数组
请添加以下定义:
interface Candles extends Array<Candle> { }
在操场上。以下是我所做的:
class Candles extends Array<Candle>
{
constructor(candles: Array<Candle.Data>) {
super(...candles.map((candle) => new Candle(candle as Candle.Data)));
Object.setPrototypeOf(Candles, Object.assign(Array.prototype, Candles.prototype));
}
}
类数组
{
构造函数(蜡烛:数组){
super(…candles.map((candle)=>新蜡烛(candle as candle.Data));
setPrototypeOf(蜡烛,对象,赋值(Array.prototype,蜡烛.prototype));
}
}
我去掉了列表
,只是扩展了数组
。我还添加了Object.setPrototypeOf(candges,Object.assign(Array.prototype,candges.prototype))
使用数组
方法和蜡烛
的方法以下是我所做的:
class Candles extends Array<Candle>
{
constructor(candles: Array<Candle.Data>) {
super(...candles.map((candle) => new Candle(candle as Candle.Data)));
Object.setPrototypeOf(Candles, Object.assign(Array.prototype, Candles.prototype));
}
}
类数组
{
构造函数(蜡烛:数组){
super(…candles.map((candle)=>新蜡烛(candle as candle.Data));
setPrototypeOf(蜡烛,对象,赋值(Array.prototype,蜡烛.prototype));
}
}
我去掉了列表
,只是扩展了数组
。我还添加了Object.setPrototypeOf(candges,Object.assign(Array.prototype,candges.prototype))
使用数组
方法和蜡烛
的方法
class Candles extends Array<Candle>
{
constructor(candles: Array<Candle.Data>) {
super(...candles.map((candle) => new Candle(candle as Candle.Data)));
Object.setPrototypeOf(Candles, Object.assign(Array.prototype, Candles.prototype));
}
}