使用 Typescript 的 Redux reducer 初始状态

Posted

技术标签:

【中文标题】使用 Typescript 的 Redux reducer 初始状态【英文标题】:Redux reducer initial state with Typescript 【发布时间】:2021-01-02 02:40:44 【问题描述】:

我想用 typescript 创建一个 reducer!

paymentReducer.tsx

let initialState = 
    saved: [],
;

export interface Payment 
    saved: ISavedPayment[];


export let payment = (
    state = initialState,
     type, payload : PaymentActions
): Payment => 
    switch (type) 
        case SAVED_PAYMENTS_LOADED:
            return  ...state, saved: payload ;
        default:
            return state;
    
;

没有错误!但是reducer的state参数中saved数组的类型变成了never。但应该是ISavedPayment[]

(parameter) state: saved: never[];

【问题讨论】:

为什么不明确指定类型? 您可以添加任何代码吗? 【参考方案1】:

明确指定 initialState 的类型:

const initialState:  saved: ISavedPayment[]  = 
    saved: [],
;

另见:

What is "not assignable to parameter of type never" error in typescript? TypeScript: Creating an empty typed container array [] is regard wrong as never[] when strictNullChecks is true #13140

【讨论】:

以上是关于使用 Typescript 的 Redux reducer 初始状态的主要内容,如果未能解决你的问题,请参考以下文章

typescript + redux:在父组件中排除 redux props

无法在 redux 、 react/typescript 中使用 rootReducer

Redux 的 combineReducers 和 TypeScript

如何使用 redux-thunk 和 TypeScript 调度 ThunkAction

使用 typescript 将异步操作发送到 redux 调度

将 Typescript 与 React-Redux 一起使用时出现类型错误