繁体   English   中英

如何使 typeof typescript 中的类型可选

[英]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 ,您可以将另一种类型设为单独的类型。 我倾向于通过typeinterface来创建我的类型,而不是依赖于typeof运算符。

话虽如此, Typescript 创建了Utility Types

TypeScript 提供了几种实用程序类型来促进常见的类型转换。 这些实用程序在全球范围内可用。

Partial是一种Utility Type ,用于:

构造一个将 T 的所有属性设置为可选的类型。 此实用程序将返回一个表示给定类型的所有子集的类型。

所以你可以写

const Users = (props: Partial<PropsType>) => {

请记住,这将使所有属性都是可选的,而不仅仅是isFetching

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM