@maestro07

Как узнать тип переменных?

Переписываю (range) компонент с JS в TS.
Как понял есть два кейса, для десктопа и для мобильной версии

сложности в определении типа параметров методе.
const handleThumbEnd = (eventData) => thumbHandler(eventData.event, true);
  const handleThumbMove = useThrottledFn(
    (eventData) => thumbHandler(eventData.event),
    250,
  );

  const handlers = useSwipeable({
    onSwiping: handleThumbMove,
    onSwiped: handleThumbEnd,
    preventDefaultTouchmoveEvent: true,
    trackMouse: true,
    trackTouch: true,
  });


eventData указывал и MouseEvent и TouchEvent. но все равно получаю ошибку что eventData.event нет такого свойства
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 2
1MK-Ultra
@1MK-Ultra
программист
как то так:
if (myvar==true ) { }
if (myvar>1) { }
и т.д.
где ошибки не выдаст, значит такой тип.
Ответ написан
Комментировать
bingo347
@bingo347 Куратор тега TypeScript
Crazy on performance...
Если либа не экспортирует нужные ей типы, то я бы так попробовал:
type EventData = {
    event: Parameters<typeof thumbHandler>[0];
};

const handleThumbEnd = (eventData: EventData) => thumbHandler(eventData.event, true);
const handleThumbMove = useThrottledFn(
    (eventData: EventData) => thumbHandler(eventData.event),
    250,
);

const handlers = useSwipeable({
    onSwiping: handleThumbMove,
    onSwiped: handleThumbEnd,
    preventDefaultTouchmoveEvent: true,
    trackMouse: true,
    trackTouch: true,
});
или так:
type HandlerMove = Parameters<typeof useSwipeable>[0]['onSwiping'];
type HandlerEnd = Parameters<typeof useSwipeable>[0]['onSwiped'];

const handleThumbEnd: HandlerMove = (eventData) => thumbHandler(eventData.event, true);
const handleThumbMove: HandlerEnd = useThrottledFn(
    (eventData) => thumbHandler(eventData.event),
    250,
);

const handlers = useSwipeable({
    onSwiping: handleThumbMove,
    onSwiped: handleThumbEnd,
    preventDefaultTouchmoveEvent: true,
    trackMouse: true,
    trackTouch: true,
});
или так
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы