Babel不剥离流注释

时间:2018-03-03 18:19:32

标签: javascript reactjs babel flowtype

我已经在我的项目中使用了React和ES6。我使用Webpack和Babel来编译我的代码。我现在第一次尝试使用Flow,但它并不像Babel那样正确地剥离Flow注释。

安装babel-preset-flow后我的.babelrc如下所示:

{
  "presets": ["es2015", "stage-3", "react", "flow"]
}

我使用Flow注释制作了一个简单的React组件:

// @flow
import React from 'react';


export default function Test({
  text?: string = 'test',
}) {
  return (
    <div>{text}</div>
  );
}

现在,当我运行我的webpack构建(使用.babelrc配置)时,我收到此错误:Module build failed: SyntaxError: Unexpected token, expected ,

错误是指React组件中text参数后面的问号。所以它不明白这是一个它应该剥离的Flow注释?有人能帮忙吗?

1 个答案:

答案 0 :(得分:1)

您不能将流类型注释放在对象的中间。像往常一样,babel将您的代码解释为destructuring the object and assigning the value to another variable name。你可能正在寻找更像这样的东西:

Try

// @flow
import React from 'react';

export default function Test({
  text = 'test',
}: {text: string}) { // Type of the destructured object comes afterwards
  return (
    <div>{text}</div>
  );
}