javascript - ES6 语法

javascript - ES6 syntax

在检查一个开源项目 (react data grid) 的源代码时,我偶然发现了这种我无法理解的语法:

class EditorBase extends React.Component {

  getStyle(): {width: string} {
    return {
      width: '100%'
    };
}


特别是 getStyle(): { 部分。

我尝试咨询其他 SO 问题、MDN function and classes 参考,但没有提及上述语法。

我在这里错过了什么?

所以这看起来是 Flow-type(由 Facebook 创建)的用法,它是 Javascript 的静态类型检查器。 (您可以将其视为 Linter,但用于数据类型而不是语法)

所以看起来比较混乱的部分可能是这一点:

{width: string}

在流程中,当函数的括号后有一个冒号时,它将表示该函数的 return 的预期类型。

此代码通知 Flow 该函数应该 return 一个具有 'width' 键的对象,该对象的类型应该是 'string'.

查看 Flow.org 了解更多信息,以及如何开始使用它!

您引用的代码检查传递给方法的变量类型。

Flow code/type 检查仅在开发模式下使用,将被 babel 剥离。

Flow is a static type checker for JavaScript.

详细了解 flow

这里是babel plugin that is being used for react-data-grid. It is actually deprecated, you should instead use babel flow-runtime(以备不时之需)。