I have a following component (simplified version):
type ValueHelper<Clearable extends boolean> = Clearable extends true
? string | null
: string;
type Props<Clearable extends boolean> = {
clearable?: Clearable;
onChange: (value: ValueHelper<Clearable>) => void;
value: ValueHelper<Clearable>;
};
const Input = <Clearable extends boolean = false>({ clearable, value, onChange }: Props<Clearable>) => {
const handleChange = (event) => {
const inputValue = event.target.value;
if (clearable && inputValue === '') {
onChange(null);
return;
}
onChange(inputValue);
}
return (
<input value={value} onChange={handleChange} />
);
}
For some reason TypeScript complains about null argument in onChange function, which seems to be wrong, since my conditional type ValueHelper checks if clearable is true, and if so, null should be allowed.
Any ideas?
