[英]How to make type optional in typeof typescript
我有一个代码 User.container.:
const mapState = (state: AppStateType) => ({
users: getUsers(state),
pageSize: getPageSize(state),
isFetching: getIsFetching(state)
})
const mapDispatch = {
toggleFollowingInProgress,
}
const connector = connect(mapState, mapDispatch)
type PropsFromRedux = ConnectedProps<typeof connector>
export type PropsType = PropsFromRedux & {
onPageChanged?: (page: number) => void
}
在文件 Users.tsx 我做这个:
import { PropsType } from './Users.container'
const Users = (props: PropsType) => {
...
}
Users.tsx 不需要变量 isFetching。 但是编译器会因为我无法通过而引发错误? 使 mapState isFetching 可选。
该怎么办? 我需要摆脱代码重复
你有几个选择。 您可以使该属性本身成为可选的。 但是,如果您希望在原始上下文中需要isFetching
,您可以将另一种类型设为单独的类型。 我倾向于通过type
或interface
来创建我的类型,而不是依赖于typeof
运算符。
话虽如此, Typescript 创建了Utility Types
。
TypeScript 提供了几种实用程序类型来促进常见的类型转换。 这些实用程序在全球范围内可用。
Partial
是一种Utility Type
,用于:
构造一个将 T 的所有属性设置为可选的类型。 此实用程序将返回一个表示给定类型的所有子集的类型。
所以你可以写
const Users = (props: Partial<PropsType>) => {
请记住,这将使所有属性都是可选的,而不仅仅是isFetching
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.