gpt4 book ai didi

typescript - 为什么在声明类型时可以在 redux 中取消定义状态?

转载 作者:行者123 更新时间:2023-12-05 07:16:09 26 4
gpt4 key购买 nike

我正在使用 dva.js (基于 redux)在我的 React 应用程序中进行状态管理。我定义了一个 reducer 如下:

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 .为什么状态可以是未定义的?如果未定义是合理的,我应该如何更改我的代码以消除错误消息?

最佳答案

目前你的 reducer 的 state 参数没有类型,所以默认情况下 state 类型是 any。您需要指定类型以将其声明为始终定义。

const setState: Reducer<StateType> = (state: StateType, { payload }) => {
...
};

关于typescript - 为什么在声明类型时可以在 redux 中取消定义状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59375934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com