dva-type
v1.0.3
Published
根据 dva model 的类型定义进行 state、dispatch 的 TS 类型推导,传入 model 类型定义,返回state和actions的类型定义。
Downloads
16
Maintainers
Readme
dva-type
安装
npm i dva-type —save-dev
说明
基于 TypeScript 4.1 版本的 Template Literal Types 特性,实现 dva models
的完整类型推导和提示。
传入项目的 models
类型定义,返回 state
、actions
的类型定义。
state
类型提示
action type
类型提示
action payload
类型推断
使用
Example
定义单个
Model
类型(注意Model
、Effect
不是从dva
中导入的)import { Effect, Model } from 'dva-type' interface ListModel extends Model { state: { list: any[] } effects: { // 定义effect 传入 payload 类型 getList: Effect<number> // 不需要 payload 的 effect getInfo: Effect } }
定义项目中所有
Model
的集合(使用type
而不是interface
)// 使用 type 定义 models,将项目中的所有 model 进行收集 type Models = { list: ListModel info: InfoModel // ... }
将
Models
传入ResolverModels
获取state
和actions
的类型import { ResolverModels } from 'dva-type' type State = ResolverModels<Models>['state'] type Actions = ResolverModels<Models>['actions']
使用
// hooks useSelector<State>() const dispatch = useDispatch<(action: Actions) => any>() // class const mapStateToProps = (state: State) => {} interface Props { dispatch: (action: Actions) => any }