Стрелочные функции как свойства класса с использованием Babel

Может кто-нибудь объяснить, как Babel в React поддерживает функции жирных стрелок в качестве свойств класса? Using Babel Попробуйте Я вижу, что они не поддерживаются:

class Question {

  // Property (not supported)
  myProp = () => {
    return 'Hello, world!';
  }

  // Method (supported)
  myFunc() {
    return 'Hello, world!';
  }

}

Свойства класса не поддерживаются в ES6 (поправьте меня, если я ошибаюсь), но в React (с Babel) они работают.

Я вижу разницу между методами и свойствами, используя TypeScript Игровая площадка, но я не могу четко понять, есть ли у Вавилона поддерживает их или нет. Есть какой-то плагин?

ОБНОВЛЕНИЕ:
я вижу, что они поддерживаются с помощью "babel-preset-stage-0".


person isar    schedule 18.03.2018    source источник
comment
с левой стороны, если вы нажмете stage-0, это сработает. Babel их поддерживает.   -  person illiteratewriter    schedule 18.03.2018
comment
Ваш вопрос в том, поддерживает ли Babel их, если я правильно вас понял. Да, это так. Вот почему у Babel предустановленная стадия 0.   -  person illiteratewriter    schedule 18.03.2018


Ответы (2)


Для поддержки свойств класса необходимо установить и добавить babel-plugin-transform-class-properties в plugins настройка вашего .babelrc (или в вашем webpack конфиге).

Обратите внимание, что этот плагин также включен в

Поэтому, если вы используете один из них, вам не нужно устанавливать babel-plugin-transform-class-properties самостоятельно.

person GG.    schedule 18.03.2018

Как предложил @illiteratewriter, свойства класса поддерживаются из настройки Stage 0. В настоящее время они поддерживаются до этапа 2:

Предложение теперь должно дополнительно содержать формальное описание синтаксиса и семантики функции (с использованием формального языка спецификации ECMAScript). Описание должно быть максимально полным, но может содержать задачи и заполнители. Нужны две экспериментальные реализации функции, но одна из них может быть в транспайлере, таком как Babel.

person isar    schedule 18.03.2018