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

bla*_*rix 8 javascript typescript reactjs

我有一个界面如下:

interface orderItem {
  symbol: string,
  side: string,
  price: number
  quantity: number
}
Run Code Online (Sandbox Code Playgroud)

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

但是, orders : [orderItem] 似乎并没有做到这一点。有谁知道我该如何继续?

这是我在构造函数中尝试执行的操作:

   this.state = {
      orders: orderItem []

  } 
Run Code Online (Sandbox Code Playgroud)

Nic*_*wer 7

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

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

this.state = {
    orders: undefined as orderItem[]
};
Run Code Online (Sandbox Code Playgroud)

或使用空数组:

this.state = {
    orders: [] as orderItem[]
};
Run Code Online (Sandbox Code Playgroud)

或者你可以提前创建一些东西,然后将它插入到对象中:

let myOrders: orderItem[] = [];
this.state = {
     orders: myOrders
};
Run Code Online (Sandbox Code Playgroud)

或者你可以有一个单独的状态接口并使用它:

interface myState {
    orders: orderItem[]
}

class myClass {
    private state: myState;
    constructor () {
        this.state = {
            orders: undefined
        }
    }
}
Run Code Online (Sandbox Code Playgroud)