Статический класс babeljs в конструкторе
Вопрос в том, как получить доступ к статическим свойствам класса из конструктора до вызова метода super?
class A
{
constructor(input) {
console.log('A', typeof new.target);
}
}
class B extends A
{
static template = '';
constructor() {
console.log('B', typeof new.target);
super();
}
}
class C extends B
{
static template = 'CCC';
}
new C();
По какой-то причине я получил:
B undefined
A undefined
вместо
B function
A function
Я уже задавал этот вопрос около года назад. На данный момент решение, представленное в нем, более не работает.
Вы можете попробовать код в консоли babel. Интересно то, что этот код работает нормально без babel (например, в последнем Chrome), и когда флажок es2015 выключен.
1 ответ
Решение
Это похоже на ошибку в Babel. Я написал небольшой плагин, который переносит new.target:
https://github.com/vbarbarosh/babel_plugin_transform_es2015_newtarget
$ npm install --save-dev git://github.com/vbarbarosh/babel_plugin_transform_es2015_newtarget
$ cat .babelrc
...
"plugins": ["transform-es2015-newtarget"],
...