it-roy-ru.com

Функции стрелок как свойства класса с использованием Babel

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

class Question {

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

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

}

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

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

Обновление:
Я вижу, что они поддерживаются с помощью "babel-preset-stage-0" .

5
isar

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

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

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

3
GG.

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

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

0
isar