javascript - 如何将 Typescript 与 Redux reducer 一起使用
问题描述
目前在 Redux reducer 作为action
我正在使用的打字稿类型any
。我应该更换什么,any
因为使用它是一种不好的做法?
我尝试Action
通过导入来使用类型,但是对于其他操作类型,import { Action } from "redux";
我得到了与此相同的错误。Property 'homePageMovies' does not exist on type 'Action<any>'.
减速器:
import {
ADD_HOME_PAGE_MOVIES,
CHANGE_SELECTED_MOVIE,
IS_MOVIE_PAGE_OPENED,
SEARCHED_MOVIE,
CURRENT_PAGE
} from "./actions";
const initialState = {
homePageMovies: [],
selectedMovie: 0,
isMoviePageOpened: false,
searchedMovie: '',
currentPage: 1
}
function rootReducer( state = initialState, action: any ){
switch(action.type) {
case ADD_HOME_PAGE_MOVIES:
return {
...state,
homePageMovies: action.homePageMovies
}
case CHANGE_SELECTED_MOVIE:
return {
...state,
selectedMovie: action.selectedMovie
}
case IS_MOVIE_PAGE_OPENED:
return {
...state,
isMoviePageOpened: action.isMoviePageOpened
}
case SEARCHED_MOVIE:
return {
...state,
searchedMovie: action.searchedMovie
}
case CURRENT_PAGE:
return {
...state,
currentPage: action.currentPage
}
default:
return state;
}
}
export default rootReducer;
export type RootState = ReturnType<typeof rootReducer>
我应该用什么代替any
?
谢谢!
解决方案
你可以给它AnyAction
类型:
像这样的东西:
import { AnyAction } from 'redux'
interface CounterState {
value: number
}
const initialState: CounterState = {
value: 0
}
export default function counterReducer(
state = initialState,
action: AnyAction
) {
// logic here
}
推荐阅读
- javascript - 为什么 defaultOpen 可以在我的代码模拟器上运行,但不能在我的网站上运行?
- javascript - UseState 未使用 TextInput 正确更新 | 反应
- react-native - 不透明度褪色动画不适用于 react-native-reanimated 2
- r - R中的动态GMM
- validation - 从电子邮件的用户名部分(不是域)查找一次性电子邮件地址
- google-bigquery - BigQuery 选择具有不同列名的多个表
- reactjs - React formik Validation Error Api Renders Every Time when other field validate
- android - Flutter - 透明的系统导航栏
- python - 有没有办法为 interp1d 配置变量 fill_values?
- python - 如果接收到 http 请求,带有 ssl_context 的烧瓶服务器会冻结