如何创建自定义类型打字稿数组

时间:2017-12-11 15:50:30

标签: javascript reactjs typescript

我有以下界面:

interface orderItem {
  symbol: string,
  side: string,
  price: number
  quantity: number
}

我想在我的构造函数中创建一个由“orderItems”组成的数组“orders”。

然而,订单:[orderItem]似乎没有做到这一点。有谁知道我怎么办?

以下是我在构造函数中尝试做的事情:

   this.state = {
      orders: orderItem []

  } 

3 个答案:

答案 0 :(得分:4)

由于您正在执行对象文字,因此冒号用于将键与值分开(即,它具有正常的javascript含义,而不是其打字稿含义)。因此,尝试按照您正在进行的方式设置类型会导致错误。

有几种方法可以做你想要的。您可以使用关键字设置类型:

LUIS

或使用空数组:

LUIS

或者您可以提前创建一些内容,然后将其插入到对象中:

as

或者你可以为状态设置一个单独的界面并使用它:

this.state = {
    orders: undefined as orderItem[]
};

答案 1 :(得分:1)

你想要的是这个:

   this.orders = new Array<orderItem>();

答案 2 :(得分:1)

您需要声明如下:

interface CartState extends Object { orders: OrderItem[] }

class Cart {
  private state: CartState;

  constructor(orders: OrderItem[]) {
    this.state = { orders };
  }
}

用于声明数组的Typescript documentation