Arrow使用Babel作为类属性

时间:2018-03-18 17:13:45

标签: javascript reactjs class babeljs ecmascript-next

有人可以解释React中的Babel如何支持胖箭头函数作为类属性? 使用Babel Try it out我可以看到它们不受支持:

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"支持它们。

2 个答案:

答案 0 :(得分:3)

要支持类属性,您需要在plugins(或.babelrc配置中)webpack设置中安装babel-plugin-transform-class-properties并添加babel-preset-stage-0

请注意,此插件也包含在

因此,如果您使用其中之一,则无需自己安装babel-plugin-transform-class-properties

答案 1 :(得分:0)

由于@illiteratewriter建议Stage 0 preset支持类属性。目前,它们一直受到支持,直到Stage 2 preset

  

该提案现在必须另外具有该功能的语法和语义的正式描述(使用ECMAScript规范的形式语言)。描述应尽可能完整,但可以包含待机和占位符。需要对该特征进行两个实验性实现,但其中一个可以在诸如Babel的转换器中。