传递给 Redux reducer 时为 Immutable.js Map 键入注解
Type annotation for Immutable.js Map when passing to Redux reducer
我一直在慢慢地向小型 Redux 应用程序添加 Flow 类型注释。但是,我一直坚持为减速器中的状态添加注释。
有问题的应用程序使用Immutable.js,状态参数是Immutable.Map
的一个实例。尽我所能,我不知道如何注释它。
这是有问题的减速器:
// @flow
import {List, Map, fromJS} from 'immutable';
type Action = {
type: string,
content: mixed
};
export default function(state = Map(), action: Action) {
switch (action.type) {
case 'ADD_LINK': {
let links = state.get('links').push(fromJS(action.content));
return state.set('links', links);
}
case 'UPDATE_FILTER':
return state.set('filter', fromJS(action.content));
default:
return state;
}
}
知道如何将州的类型注释添加为 Immutable.js 地图吗?我尝试了以下但没有成功,现在我很困惑:
import type { Map } from 'immutable';
export default function (state: Map = Map(), action: Action) {
您可以这样描述state
:
export default function(state: Map<string, mixed> = Map(), action: Action)
{
// ...
}
此外,还有更好的方式来描述 Action
:
export type Action = {
type: 'ADD_LINK' | 'UPDATE_FILTER'
, content: mixed
};
现在将检测到无效的操作字符串...
请注意,要调用您的函数,您必须将文字对象显式转换为 Map
:
let res = blah(Map({foo: 'bar'}), {type: 'ADD_LINK', content: 'blah-blah'});
我一直在慢慢地向小型 Redux 应用程序添加 Flow 类型注释。但是,我一直坚持为减速器中的状态添加注释。
有问题的应用程序使用Immutable.js,状态参数是Immutable.Map
的一个实例。尽我所能,我不知道如何注释它。
这是有问题的减速器:
// @flow
import {List, Map, fromJS} from 'immutable';
type Action = {
type: string,
content: mixed
};
export default function(state = Map(), action: Action) {
switch (action.type) {
case 'ADD_LINK': {
let links = state.get('links').push(fromJS(action.content));
return state.set('links', links);
}
case 'UPDATE_FILTER':
return state.set('filter', fromJS(action.content));
default:
return state;
}
}
知道如何将州的类型注释添加为 Immutable.js 地图吗?我尝试了以下但没有成功,现在我很困惑:
import type { Map } from 'immutable';
export default function (state: Map = Map(), action: Action) {
您可以这样描述state
:
export default function(state: Map<string, mixed> = Map(), action: Action)
{
// ...
}
此外,还有更好的方式来描述 Action
:
export type Action = {
type: 'ADD_LINK' | 'UPDATE_FILTER'
, content: mixed
};
现在将检测到无效的操作字符串...
请注意,要调用您的函数,您必须将文字对象显式转换为 Map
:
let res = blah(Map({foo: 'bar'}), {type: 'ADD_LINK', content: 'blah-blah'});