web-dev-qa-db-fra.com

La flèche fonctionne comme une propriété de classe avec Babel

Quelqu'un peut-il expliquer comment Babel dans React prend en charge les fonctions de flèche épaisse en tant que propriétés de classe? Utilisation de Babel Essayez-le Je vois qu'elles ne sont pas prises en charge:

class Question {

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

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

}

Les propriétés de classe ne sont pas prises en charge dans ES6 (corrigez-moi si je me trompe), mais ensuite dans React (avec Babel), elles fonctionnent.

Je peux voir la différence entre les méthodes et les propriétés utilisant TypeScript Playground mais je ne comprends pas clairement si Babel les prend en charge ou non. Existe-t-il un plug-in?

METTRE À JOUR:
Je peux voir qu'ils sont supportés avec "babel-preset-stage-0" .

5
isar

Pour prendre en charge les propriétés de classe, vous devez installer et ajouter babel-plugin-transform-class-properties au paramètre plugins de votre .babelrc (ou dans votre configuration webpack.).

Notez que ce plugin est également inclus dans 

Donc, si vous en utilisez un, vous n'avez pas besoin d'installer babel-plugin-transform-class-properties par vous-même.

3
GG.

Comme @illiteratewriter, les propriétés de classe suggérées sont prises en charge à partir de Stage 0 preset . Pour le moment, ils sont supportés jusqu'à Stage 2 preset :

La proposition doit désormais avoir en plus une description formelle de la syntaxe et de la sémantique de la fonctionnalité (en utilisant le langage formel de la spécification ECMAScript). La description doit être aussi complète que possible, mais peut contenir des tâches et des espaces réservés. Deux implémentations expérimentales de la fonctionnalité sont nécessaires, mais l'une d'entre elles peut être dans un transpiler tel que Babel.

0
isar