我有一个这样的课程:
export class Car{
color='';
topSpeed=0;
wheels = 4;
}
在我的火炉店里,我有一份文件" car"值:
color:red
topSpeed:230
(所以没有'轮'键)
然后或多或少地重新分配和分配数据:
firebaseController.getCar().subscribe(car=>{
this.car = car
}
一切都运转正常,但是轮子越来越严重了#34;未定义"如果键不存在或该键的值为空,我可以使它不覆盖变量吗?
答案 0 :(得分:1)
使用点差运算符:
this.car = { ...(new Car()), ...car };
这样,this.car
会收到默认属性(感谢new Car()
),然后...car
部分会添加自己的属性,但只会添加不同的属性undefined
。
但是,我建议您不要在这种情况下使用课程,因为this.car
变量确实不是Car
的实例。例如,如果Car
采用honk()
方法,则您无法执行this.car.honk()
。也许在这种情况下使用Car
的构造函数会更好。或者,如果这样的对象根本没有方法,请使用接口:
interface Car {
color?: string;
topSpeed?: number;
wheels?: number
}
const defaultCar: Car = {
color: '',
topSpeed: 10,
wheels: 4
};
// ....
this.car = {...defaultCar, ...car }
成为car
Firebase返回的对象。