So, I have interface for select. I need have type for value. If multiple is equal true, value type must be string[] or string if multiple disabled.
interface SelectProps {
multiple?: boolean;
value: string | string[];
}
Component:
const Select = (props: SelectProps) => {
// code
};
I tried to use generic, like this
interface SelectProps<Multiple extends boolean | undefined> {
multiple?: boolean;
value: Multiple extends true ? string[] : string;
}
const Select = (props: SelectProps<typeof props.multiple>) => {
// code
};
but I recieve error: 'multiple' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
CodePudding user response:
Select should also be a generic and it should forward type parameter to SelectProps
Also, multiple should be of type Multiple
