Я создаю класс с именем Vehicle и подкласс с именем Tesla.Оба класса получают массив как внутри параметра конструктора.Я не был уверен, должен ли я использовать оператор распространения в этом случае.У меня вопрос, как мне извлечь значения из массивов и установить их в качестве свойств для отдельных классов?
Я пытался использовать оператор распространения и индексации, но у меня это не сработало.
class Vehicle{
constructor(...args){
let arr = Array.from(args)
this.wheelTotal = arr[0]
this.energySource = arr[1]
this.manufacturer = arr[2]
this.isOn = false
}
getSpec(key){
if(this.hasOwnProperty(key)){
return this[key]
}
}
}
class Tesla extends Vehicle{
constructor(...args){
let arr2 = Array.from(...args)
super(...args);
this.milesPerCharge = arr2[0]
this.model = arr2[1]
this.chargePercentage = arr2[2]
}
minutesToFullCharge(){
return 100 - this.chargePercentage
}
}
describe('Tesla', () => {
let teslaCar;
beforeEach(() => {
teslaCar = new Tesla([300, 'Model S', 50, 100, [[4, 'electric', 'Tesla']]]);
});
it('should have properties specific to a Tesla such as MPC (miles per charge) and Model', () => {
expect(teslaCar.milesPerCharge).toBe(300);
expect(teslaCar.model).toBe('Model S');
expect(teslaCar.chargePercentage).toBe(50); // 50% charged
expect(teslaCar.minutesToCharge).toBe(100); // 100 minutes for a full charge
});
it('should have all properties of a Vehicle instance', () => {
expect(teslaCar.wheelTotal).toBe(4);
expect(teslaCar.energySource).toBe('electric');
expect(teslaCar.manufacturer).toBe('Tesla');
expect(teslaCar.getSpec('wheelTotal')).toBe(4);
});