Javascript 为什么可以';在使用isMap()检查后,是否告诉我的对象是不可变映射?
我试图找出为什么Flow会在这里出现错误: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
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);