Как менять тип относительно входящих данных? typescript
В функцию onChange
приходит переменная dates
зависящая от атрибута selectsRange (reactDatePicker)
. Если selectsRange === true
в dates
приходит массив с 2-мя Date
, а без просто Date
.
type IOnChangeRange = [Date | null, Date | null]
type IOnChangeSingle = Date | null
Я пытался сделать так, но так не работает. Работает только по отдельности.
const onChange = (dates: IOnChangeRange | IOnChangeSingle) => {
if(selectsRange){
const [start, end] = dates;
setStartDate(start);
setEndDate(end);
} else {
setStartDate(dates);
}
};
Подскажите как сделать правильно прописать типы. Выходит ошибка на строке: const [start, end] = dates;
:
Type 'IOnChangeRange | IOnChangeSingle' is not an array type.
и на строке setStartDate(dates)
:
Argument of type 'IOnChangeRange | IOnChangeSingle' is not assignable to parameter of type 'SetStateAction<Date | null>'.
Type 'IOnChangeRange' is not assignable to type 'SetStateAction<Date | null>'.
Type '[Date | null, Date | null]' is not assignable to type 'Date'.
Источник: Stack Overflow на русском