Это невозможно сделать с Flow в этой форме. Поскольку PropTypes проверяются во время выполнения, а не статически, может быть больше гибкости. Если бы статическая проверка типов допускала такие вещи, это было бы неразрешимо.
Однако вы можете сделать что-то вроде этого:
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,
}
Очевидно, что ни один из этих вариантов не будет таким кратким, как у вас, и потребуется изменить код, который создает и использует эти значения. К сожалению, иногда приходится платить за безопасность статического средства проверки типов.
Другой вариант — просто оставить их оба необязательными:
type Props = {
children: any,
step?: number,
steps?: number,
footer: any,
}
Таким образом, Flow не будет обеспечивать существование steps
, если существует step
. Однако вам не придется менять свой другой код, и ничто не мешает вам добавить проверку времени выполнения (которая будет не хуже того, что у вас уже есть).
person
Nat Mote
schedule
12.01.2017