Это не может быть сделано с помощью потока в этой форме. Поскольку PropTypes проверяются во время выполнения, а не статически, может быть больше гибкости. Если бы статичная typechecker разрешила такую вещь, она была бы неразрешимой.
Однако, вы могли бы сделать что-то вроде этого:
type Props = {
children: any,
// not sure about this name, but you get the idea
step: ?{
step: number,
steps: number,
},
footer: any,
}
Или, если вы можете иметь steps
, но не step
:
type Props = {
children: any,
// not sure about this name, but you get the idea
step: ?{
step?: number,
steps: number,
},
footer: any,
}
Очевидно, что ни один из этих вариантов является столь же кратким, как то, что у вас есть, и это потребует изменения кода, который производит и потребляет эти значения. К сожалению, иногда можно заплатить цену, чтобы обеспечить безопасность статического typechecker.
Другим вариантом является просто оставить их необязательными:
type Props = {
children: any,
step?: number,
steps?: number,
footer: any,
}
Таким образом, поток не будет обеспечивать, что steps
существует, если step
существует. Однако вам не придется менять свой другой код, и нет ничего, что помешает вам добавить проверку времени выполнения (что будет не хуже того, что у вас уже есть).