Задать вопрос
@tostershmoster

Для чего setTimeout возвращает разные типы?

type F = (...p: any[]) => any

function debounce(fn: F, t: number): F {
  let timeout: ReturnType<typeof setTimeout>;

  return function(...args) {
    clearTimeout(timeout);
    timeout = setTimeout(() => fn(...args), t); // так код работает
    // timeout = setTimeout(fn, t, ...args); // error TS2322: Type 'number' is not assignable to type 'Timeout'.
  }
};
  • Вопрос задан
  • 480 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
Aetae
@Aetae Куратор тега TypeScript
Тлен
В Node.js setTimeout имеет иную сигнатуру. Если не используете node.js - исключите её типы из tsconfig. Ну или пишите wimdow.setTimeout как советовали в комментах, тем самым указывая на объект window который есть только в браузере.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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