[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;
相关推荐
我怎么能这么帅气4 分钟前
告别旧标签:HTML5 废弃标签清单与现代替代方案
前端·javascript·html
ak啊4 分钟前
WebGL入门指南:从零构建你的第一个3D应用
前端·webgl
SameX6 分钟前
HarmonyOS Next类型安全实践:强类型检查与溢出控制
前端
前端店小二8 分钟前
前端Mac从零到一搭建开发环境
前端·mac
全靠搬砖加氧气9 分钟前
ElementUI - select 全选组件
前端
小离a_a10 分钟前
css实现圆环展示百分比,根据值动态展示所占比例
前端·css
袋鱼不重15 分钟前
打包器如何融入脚本?
前端
南方kenny15 分钟前
微信红包算法设计:从随机到公平的技术实现
前端·人工智能
laperter19 分钟前
vue3项目开发第二篇
前端