Javascript 为什么可以';在使用isMap()检查后,是否告诉我的对象是不可变映射?

Javascript 为什么可以';在使用isMap()检查后,是否告诉我的对象是不可变映射?,javascript,immutable.js,flowtype,Javascript,Immutable.js,Flowtype,我试图找出为什么Flow会在这里出现错误: // @flow import { Map } from 'immutable'; type Filemap = Map<string, Buffer>; type FilemapCompatibleObject = Filemap | { [string]: Buffer }; export const castFilemap = (object: FilemapCompatibleObject): Filemap => {

我试图找出为什么Flow会在这里出现错误:

// @flow

import { Map } from 'immutable';

type Filemap = Map<string, Buffer>;
type FilemapCompatibleObject = Filemap | { [string]: Buffer };

export const castFilemap = (object: FilemapCompatibleObject): Filemap => {
  // checking with instanceof works fine
  if (object instanceof Map) {
    return object;
  }

  // checking with isMap does not
  if (Map.isMap(object)) {
    return object;
    // ^^^ FLOW ERROR: object type This type is incompatible with the expected return type of Map
  }

  return Map(object);
};

回答我自己的问题

问题似乎在于,
%检查
尚未在Immutable中发布。最新稳定版本3.8.1


此外,它似乎还没有处于流稳定状态(从v0.45开始)。

您确定它正确地获取了
不可变的定义吗?比如,如果你导入了一些不存在的东西,那么这个错误是否与预期的一样?我已经在这个问题上创建了问题
declare function isMap(maybeMap: mixed): boolean %checks(maybeMap instanceof Map);