我是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可以强制执行类型检查,那将会很好。
谢谢。
答案 0 :(得分:0)
嗯。我也在学习流程,但这似乎是个错误。 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