【发布时间】:2020-04-10 01:21:11
【问题描述】:
我正在使用 dva.js(基于 redux)在我的 react 应用程序中进行状态管理。我定义了一个减速器如下:
import { Reducer } from 'redux';
interface StateType {
a: any;
b: any;
}
const setState: Reducer<StateType> = (state, { payload }) => {
return {
...state,
b: payload,
};
};
tslint 会告诉我类型 '{ a: any; 中缺少属性 'a' b:任何; }' 但在“StateType”类型中是必需的。于是查看了redux的d.ts文件,找到了reducer的类型声明:
export type Reducer<S = any, A extends Action = AnyAction> = (
state: S | undefined,
action: A
) => S
显然tslint考虑reducer的第一个参数state是可以undefined的,所以不能确定reducer的返回值类型是StateType。为什么状态可以是未定义的?如果未定义是合理的,我应该如何更改我的代码以消除错误消息?
【问题讨论】:
标签: typescript redux typescript-typings