使用打字稿中的类型

时间:2017-09-11 11:39:32

标签: arrays

我想声明一个具有以下结构的对象

public car = {
    price: 20000,
    currency: EUR,
    seller: null,
    model: {
        color: null,
        type: null,
        year: null
    } as Array<object>
};

然后,当我使用这个对象时,我有类似

的东西
public addProduct(typeId: number): void {
    this.car.model.push({type: typeId});
}

我面临的问题是我定义了model对象,因为使用as Array<object>生成了一些单独的行

Type '{ color: null; type: null; year: null; }' cannot be converted to type 'object[]'. Property 'length' is missing in type '{ color: null; type: null; year: null; }

我找不到合适的原因来定义它。使用push生成“空”对象非常重要,我可以从视图中添加属性。

1 个答案:

答案 0 :(得分:1)

您可以在打字稿中创建一个对象,如

let car: any = {
  price: 20000,
  currency: 'EUR',
  seller: null,
  model: [
    { color: 'red', type: 'one', year: '2000' }, 
    { color: 'blue', type: 'two', year: '2001' }
  ]
}

然后你可以做你想做的事情

car.model.push({ color: 'green', type: 'three', year: '2002' });

添加新模型,或者获取一个

car.model[0] // returns { color: 'red', type: 'one', year: '2000' }

另一种选择是创建一个类而不是一个对象

export class Car {
  public price: number;
  public currency: string;
  public seller: string;
  public models: any[];

  constructor() { }
}

然后将所有适当的方法放在类中。