Задать вопрос
Natebash
@Natebash
React, Vue, Angular, Navite JS, Python / Node JS

Как правильно затипизировать данный кусок кода?

const [showTooltip, setShowTooltip] = useState<boolean>(false); // показывает тултип если true

  const timer = useRef<ReturnType<typeof setTimeout>>();

  const handleMouseEnter = () => {
    timer.current = setTimeout(() => {
      setShowTooltip(true);
    }, 500);
  };

  const handleMouseLeave = () => {
    clearTimeout(timer.current as NodeJS.Timeout);
    setShowTooltip(false);
  };


clearTimeout(timer.current as NodeJS.Timeout); - смущает данная строчка. Вопрос, как правильно типизируются такие вещи?
current - число
time при отсутствии эффекта наведения - undefined
  • Вопрос задан
  • 420 просмотров
Подписаться 1 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • ProductStar
    Разработка на React
    6 недель
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
Решения вопроса 1
Aetae
@Aetae Куратор тега TypeScript
Тлен
Если не используете Node.js то просто исключите типы для неё из конфига TS.
Тогда у вас setTimeout будет возвращать простой number, а clearTimeout будет принимать number | undefined. И никаких проблем.)

Если же код ноды по каким-то причинам у вас идёт вперемешку со фронтовым кодом, то для фронтовых таймеров можете писать явно window.setTimeout и window.clearTimeout.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
от 250 000 до 300 000 ₽
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽