【问题标题】:How to create an array of custom types typescript如何创建自定义类型数组
【发布时间】:2017-12-11 15:50:29
【问题描述】:

我有一个界面如下:

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

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

但是,orders : [orderItem] 似乎并没有起到作用。有谁知道我该怎么做?

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

   this.state = {
      orders: orderItem []

  } 

【问题讨论】:

  • 非常感谢您的回复!我试过你提到的,但它是说“orderItem”被称为一种类型,但被用作一个值。
  • 现在我看到你正在尝试创建一个对象文字,我删除了我的评论并在下面添加了一个更相关的答案

标签: javascript reactjs typescript


【解决方案1】:

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

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

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

或使用空数组:

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

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

let myOrders: orderItem[] = [];
this.state = {
     orders: myOrders
};

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

interface myState {
    orders: orderItem[]
}

class myClass {
    private state: myState;
    constructor () {
        this.state = {
            orders: undefined
        }
    }
}

【讨论】:

  • 谢谢!现在更有意义了
【解决方案2】:

你想要的是这个:

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

【讨论】:

    【解决方案3】:

    你需要像这样声明它:

    interface CartState extends Object { orders: OrderItem[] }
    
    class Cart {
      private state: CartState;
    
      constructor(orders: OrderItem[]) {
        this.state = { orders };
      }
    }
    

    Typescript documentation 用于声明数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      • 2013-01-22
      • 2020-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多