Как расширить статические свойства в ES Next?
Иногда (хотя и редко) вам нужно расширять, а не перезаписывать родительские статические свойства, такие как (очень неудачный) пример ниже:
class Person {
static coreStats = {
role: "slacker",
weapon: null,
speed: 4,
vechicle: "roller blades",
};
}
class Ninja extends Person {
static coreStats = {
role: "silent assassin",
weapon: "katana",
speed: 99,
};
}
console.log(Ninja.coreStats); // But vechicle is no more
Как можно расширить статические свойства в дочернем классе, не нарушая родительские свойства?
1 ответ:
Вы можете сделать это так:
class Person { static coreStats = { role: "slacker", weapon: null, speed: 4, vechicle: "roller blades", }; } class Ninja extends Person { static coreStats = Object.assign({}, Person.coreStats, { role: "silent assassin", weapon: "katana", speed: 99 }); } console.log(Ninja.coreStats);
Это приведет к слиянию
coreStats
и переопределениюPerson.coreStats
сNinja.coreStats
в случае дублирования