【问题标题】:Static type checking with immutable.js and Facebook flow使用 immutable.js 和 Facebook 流进行静态类型检查
【发布时间】:2015-02-08 03:52:51
【问题描述】:

我一直在为我的 react 应用程序使用 Immutable.js,我很喜欢它。 Facebook 还发布了Flow。 Flow 可以让我做一些很酷的事情,比如 prop 类型的编译时验证。问题是我的道具通常是不可变的对象。 Immutable.js 和 Flow 一起使用有什么好的方法吗?

给定一个 Immutable.js 对象参数,我可以使用 Flow 以某种方式指定它应该包装的对象的类型吗?在那个对象中,我可能有字符串、数字、布尔值,更重要的是还有其他 Immutable.js 对象。

【问题讨论】:

  • 也许您可以使用访问器来静态注释 Immutable.js 的动态部分。
  • 您的意思是用提供注释访问器的自定义对象包装不可变对象吗?
  • @brandon-tiley 我犹豫是否要使用 flowtype 标签,因为有一个与排版完全不相关的项目,名为 FlowType.JS
  • @KilamanjaroKablam 运气好吗?
  • 了解更多关于 JS 类型的信息。您可以使用npmjs.com/package/react-immutable-proptypes 检查道具类型。它对我有用。

标签: javascript reactjs flowtype


【解决方案1】:

编辑添加flowtypes have been added since most recent major version

原答案:

Flow 和 Immutable.js 之间的集成似乎是 in development,但尚未完成。

【讨论】:

    【解决方案2】:

    在撰写本文时,您可以通过从此处获取接口文件来将两者一起使用:

    https://github.com/facebook/immutable-js/blob/master/type-definitions/immutable.js.flow

    1. 在您的项目中创建一个目录,例如interfaces
    2. 如果.flowconfig不存在,则创建它,并添加以下行

    .flowconfig

    [libs]
    interfaces/
    

    这将在 ./interfaces/ 目录中查找流定义。

    虽然在 SO 上不赞成链接到资源,但这种情况是有道理的,因为这将是最新的(我假设 FB 在更新核心库时会保持更新)

    【讨论】:

    • 能否提供一个使用中的示例。这个不可变版本的类型是什么样的? type someObject = {fieldOne: string, fieldTwo: number};
    • 不确定为什么投反对票?这几乎与@Geoffrey Abdallah 的答案相同,但在他之前得到了回答?
    • 感谢您的大力帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-06-30
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多