Typescript初始化类中定义的类的对象成员

时间:2018-02-02 13:51:16

标签: typescript initialization

在这种情况下(简化):

    class Order{
        items:{prices:number[],lastUpdate:Date};
    }

我希望订单没有未定义。

    class Order{
        items:{prices:number[],lastUpdate:Date} = {prices:[],lastUpdate:new Date};
    }

做到了,但我不确定是最干净(懒惰)的方式。在这种情况下我不想要的是创建一个OrderItem类。建议?

1 个答案:

答案 0 :(得分:1)

TypeScript会为您提供infer种类型的变量和属性,如果它推断出您不喜欢的内容,则只需correct it

所以你可以这样做:

class Order {
  items = { prices: [], lastUpdate: new Date };
}

推断items属于{ prices: never[]; lastUpdate: Date; }类型。这接近你想要的但是它不知道一个空数组会保存数字。所以你可以这样做:

class Order {
  items = { prices: [] as number[], lastUpdate: new Date };
}

现在您已经告诉它(通过类型断言)空数组用于数字,items根据需要推断为{ prices: number[]; lastUpdate: Date; }

希望有所帮助。