Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript:使用数组表示法从类中获取项_Typescript_Typescript2.4 - Fatal编程技术网

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));
  }
}