我想声明一个具有以下结构的对象
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
生成“空”对象非常重要,我可以从视图中添加属性。
答案 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() { }
}
然后将所有适当的方法放在类中。