Рассмотрим следующий код
const fooBar = parent => class extends parent {
constructor() {
super();
this.foo = 1;
}
bar() {
return 2;
}
}
class FooBar extends fooBar(Object) {};
console.log(new FooBar());
Создает миксин fooBar
и извлекает из него FooBar
.Запуск этого кода, как и ожидалось, выдает FooBar { foo: 1 }
.
Теперь давайте введем Бабеля.Я попробовал это с 6.xx и последним 7.2.Начиная с новой папки,
npm i @babel/core @babel/preset-env
echo { "presets": ["@babel/preset-env"] } > .babelrc
npx babel test.js > test2.js
node test2.js
Outputs { foo: 1 }
- как мы видим, прототип потерян.Попытка вызвать bar
на созданном экземпляре не удастся.
Это ошибка в Babel или я использую наследование неподдерживаемым способом?
Обновление: Iя получаю тот же результат, используя https://babeljs.io/en/repl, поэтому это не проблема для моей установки.