Я пытаюсь вычислить тип значения на основе другого. Если тип prop1 равен x, тогда тип prop2 должен быть y.
Например, в случае поля ввода,
<Input
type="number"
onChange={(value: number | string) => {}}
/>
, если prop type="number"
, тогда typeof value из onChange должно быть number
и string
в противном случае. Я в основном пытаюсь удалить условие |
здесь.
Когда я пытаюсь вызвать Input следующим образом:
<Input
type="number"
onChange={(value: number) => {}}
/>
Поток выдает ошибку, потому что значение может быть либо число или строка, если используется |
. Значение в этом случае, очевидно, будет иметь номер, поскольку тип - "number"
. Есть ли способ заставить поток понять, что в данном случае это будет число?
Компонент Input выглядит следующим образом:
type CommonProps = {
disabled?: boolean,
autoFocus?: boolean,
placeholder: string
};
type PropsNumber = {
type: 'number',
onChange: (number) => void,
};
type PropsString = {
type: 'string' | 'email',
onChange: (string) => void,
};
type Props = CommonProps & (PropsNumber | PropsString);
class Input extends React.Component<Props, {}> {
render(){
return (
<input
onChange={this.props.onChange}
type={this.props.type}
disabled={this.props.disabled}
autoFocus={this.props.autoFocus}
/>
);
}
}
Получение ошибки Could not decide which case to select, since case 1 [1] may work but if it doesn't case 2 [2] looks promising too.
везде, где вызывается этот компонент. Добавление игровая площадка к сценарию.