Redux Toolkit TypeScript 快速入门
你将学到什么
- 如何使用 TypeScript 设置和使用 Redux Toolkit 和 React-Redux
先决条件
- 对 React Hooks 的知识
- 对 Redux 术语和概念 的理解
- 对 TypeScript 语法和概念的理解
介绍
欢迎来到 Redux Toolkit TypeScript 快速入门教程!本教程将简要介绍如何在 Redux Toolkit 中使用 TypeScript。
本页主要关注如何设置 TypeScript 方面的内容。对于 Redux 是什么,它是如何工作的,以及如何使用 Redux Toolkit 的完整示例,请参见 "教程概览" 页面中链接的教程。
Redux Toolkit 已经用 TypeScript 编写,所以它的 TS 类型定义是内置的。
React Redux 在 NPM 上有一个单独的 @types/react-redux
类型定义包。除了对库函数进行类型化外,类型还导出了一些帮助器,使得在你的 Redux store 和你的 React 组件之间编写类型安全的接口更加容易。
从 React Redux v7.2.3 开始,react-redux
包依赖于 @types/react-redux
,所以类型定义将与库一起自动安装。否则,你需要手动自己安装它们(通常是 npm install @types/react-redux
)。
Redux+TS 的 Create-React-App 模板已经配置了这些模式的工作示例。
项目设置
定义根状态和调度类型
使用 configureStore 不应需要任何额外的类型定义。然而,你会想要提取 RootState
类型和 Dispatch
类型,以便在需要的时候可以引用它们。从 store 本身推断这些类型意味着,当你添加更多的状态切片或修改中间件设置时,它们会正确地更新。
由于这些是类型,所以可以直接从你的 store 设置文件(如 app/store.ts
)中导出它们,并直接导入到其他文件中。
app/store.ts
import { configureStore } from '@reduxjs/toolkit'
// ...
export const store = configureStore({
reducer: {
posts: postsReducer,
comments: commentsReducer,
users: usersReducer,
},
})
// 从 store 本身推断 `RootState` 和 `AppDispatch` 类型
export type RootState = ReturnType<typeof store.getState>
// 推断的类型:{posts: PostsState, comments: CommentsState, users: UsersState}
export type AppDispatch = typeof store.dispatch