关于 TypeScript 中的类型问题

2021-03-21 15:22:25 +08:00
 Yukee798
const mapStateToProps = (state: IState): IMappedState => ({
    fileList: state.fileList,
    isFileSearch: state.isFileSearch,
    filterIds: state.filterIds,
    openedFilesId: state.openedFilesId,
    activedId: state.activedId,
    
});

这里的 IState 是 rootState 的接口,然后 IMappedState 是给 IState 加了层 Partial 让其全部变为可选属性,我是希望在组件里面使用 redux 中的状态的时候能够有更好的变量提示,但是这个组件也不需要使用 redux 中的所有状态,所以将 IState 变成了可选属性,这样确实有清晰的代码提示了,但是这些变量的类型变成了 ?? | undefined,每次使用的时候都需要判空强转类型,有点不方便,请问有什么办法能够解决这个问题吗?

1013 次点击
所在节点    前端开发
2 条回复
felixin
2021-03-21 15:46:23 +08:00
不用写返回类型,直接让编译器类型推断出来,或者写 Pick<IState, 'xxx' | 'yyy' | 'zzz'>
Yukee798
2021-03-21 17:25:18 +08:00
@felixin 感谢,刚刚去补充了一下 TS 里面的一些对象工具类型,目前解决办法是使用 Pick<IState, StateTypes.xxx>,用了一个枚举定义了一下状态的名称,然后对于 mapDispatchToProps 里面的方法也同理使用 Pick<IDispatchAction, ActionTypes.xxx>

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/763660

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX