javascript - Flow 和 Immutable.js 映射

标签 javascript immutable.js flowtype

我是 Flow 的新手,我正在尝试弄清楚如何让它与 Immutable JS 的 Map 一起工作。

我有以下代码:-

// @flow

import { Map } from 'immutable';

let myMap: Map<string, number> = new Map({ a: 'a' });

myMap = myMap.merge({ a: 'a' });

当我运行 Flow 时,出现以下错误,这是预期的:-

src/js/a.js:7
  7: myMap = myMap.merge({ a: 'a' });
                              ^^^ string. This type is incompatible with
  5: let myMap: Map<string, number> = Map({ a: 'a' });
                            ^^^^^^ number

我的问题是为什么 new Map({ a: 'a' }); 没有被标记为错误?

是否可以将其视为错误?在我尝试应用 Flow 的现有项目中,我们有很多类似的用法,如果 Flow 可以对其执行类型检查,那就太好了。

谢谢。

最佳答案

嗯。我也在学习流程,但这似乎是一个错误。 Immutable 的 Map 类的流声明如下所示:

declare class Map<K,V> extends KeyedCollection<K,V> {
  static <K, V>(): Map<K, V>;
  static <V>(obj?: {[key: string]: V}): Map<string, V>;
  ...

有趣的是,

const mapIngredients: { [string]: number } = { a: 'a' }

确实在“a”上触发流错误。当流程对 Map 的参数进行类型检查时,似乎出了点问题。事实上,甚至 Map(123) 类型检查:/

流版本:0.37.4

关于javascript - Flow 和 Immutable.js 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41486706/

相关文章:

javascript - 流量: Specify type of the keys and values of an object

javascript - Accordion 菜单自动折叠

javascript - 选择...从...使用 Ajax 的位置

php - 隐藏/返回发送按钮,单击时具有淡入淡出效果

javascript - 覆盖 Immutable.js 实例的 getter 逻辑

javascript - 传单 map 的绘制线

javascript - 如何将 JS 对象数组与现有的不可变 JS 有序映射结合起来?

php - 将 JavaScript 正则表达式字符串转换为 PHP 正则表达式字符串

reactjs - 需要对对象字面量进行注释的流程

javascript - 为什么 Flow 拒绝由并集的交集组成的元组?