[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;
相关推荐
hackchen14 分钟前
从0到1解锁Element-Plus组件二次封装El-Dialog动态调用
前端·vue.js·elementui
君子宜耘心15 分钟前
el-table虚拟列表封装
前端
黄瓜沾糖吃18 分钟前
大佬们指点一下倒计时有什么问题吗?
前端·javascript
温轻舟19 分钟前
3D词云图
前端·javascript·3d·交互·词云图·温轻舟
buibui19 分钟前
打包一个工具类
前端
巴别塔的饿灵21 分钟前
Webpack[TBC]
前端
LinHan21 分钟前
我的浏览器插件 Horizon-Hop 又又又更新啦!
前端
一个小潘桃鸭22 分钟前
需求:el-upload实现上传/粘贴图片功能
前端
胡清波23 分钟前
# vue 的 Diff 算法
前端·面试
浩龙不eMo24 分钟前
✅ Lodash 常用函数精选(按用途分类)
前端·javascript