[react] 优雅解决typescript动态获取redux仓库的类型问题

store.getState()是可以获取总仓库的

先拿到函数的类型

再用ReturnType<T>

它是 TypeScript 中的一个内置条件类型,用于获取某个函数类型 T 的返回值类型

代码

javascript 复制代码
    // 先拿总仓库的函数类型
    type StatefuncType = typeof store.getState;
    //再拿函数类型T的返回值类型
    type StateType = ReturnType<StatefuncType>;
    const counter = useSelector((state: StateType) => {
        return state.couterSlice;
    });

可以直接一步到位

javascript 复制代码
    type StateType = ReturnType<typeof store.getState>;

也可以用这样

javascript 复制代码
const a = store.getState();
    type a1 = typeof a;

还麻烦怎么办?我想在导入的时候自带类型呢?

用TypedUseSelectorHook 加自定义useSelector

参考:TypeScript 快速开始 | Redux 中文官网

javascript 复制代码
import { configureStore } from '@reduxjs/toolkit';
import { useSelector, TypedUseSelectorHook } from 'react-redux';
import couterSlice from './modules/counter';

const store = configureStore({
    reducer: {
        couterSlice,
    },
});
export type storeType = ReturnType<typeof store.getState>;

export const useAppSelector: TypedUseSelectorHook<storeType> = useSelector;
export default store;
相关推荐
派小心.24 分钟前
DAU和MAU怎么计算?先确定活跃事件、用户键和统计窗口
大数据·服务器·前端·人工智能·数据分析
代码猎人25 分钟前
前端怎么配合后端完成bug修复
前端
叫我铁汁儿吧28 分钟前
JS作用域
前端·面试
定栓28 分钟前
Webpack迁到Vite第七节(四):全家桶移除 — 保留项、脚本与数据收尾
前端·webpack·node.js
VimorphTech36 分钟前
React 任务轮询,为什么不能只写一个 setInterval?
javascript·typescript
代码猎人36 分钟前
前端怎么优化首屏加载速度
前端
代码猎人37 分钟前
前端怎么保障项目稳定上线与运行
前端
数据掘金37 分钟前
小程序埋点方案的埋点文档怎么自动生成?
前端
deli00738 分钟前
cron 表达式为什么总跑错?10 个场景实测,下次执行时间一眼看懂
前端
代码猎人41 分钟前
前端怎么优化页面性能
前端