undefined };
export type UncontrolledValue = { defaultValue?: number, value?: undefined };
export type Value = ControlledValue | UncontrolledValue;
type BaseProps = {
name: string,
placeholder?: string,
onChange?: (args: ChangeArgs) => void,
};
export type ControlledProps = ControlledValue & BaseProps;
export type UncontrolledProps = UncontrolledValue & BaseProps;
export type Props = ControlledProps | UncontrolledProps;
class InputTime extends React.PureComponent<Props> {
render() {
const { value } = this.props;
if (value === undefined) {
return <InputTimeUncontrolled {...this.props} />;
}
return <InputTimeControlled {...this.props} />;
}
}
TS в этом случае у меня почему-то не понимает, что если value === undefined, то это UncontrolledProps и ругается, что не соответстует ControlledProps
тебе короткое объяснение или длинное?) коротко: ТС неидеально выводит конкретный тип юниона по рандомным полям (хотя в 3.2 есть какие-то подвижки вроде) православным решением будет написать кастомный type guard ``` const isUncontrolledProps = (props: Props): props is UncontrolledProps => props.value === undefined ``` и использовать его в условии
Обсуждают сегодня