@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'.
  }
};
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега TypeScript
Тлен
В Node.js setTimeout имеет иную сигнатуру. Если не используете node.js - исключите её типы из tsconfig. Ну или пишите wimdow.setTimeout как советовали в комментах, тем самым указывая на объект window который есть только в браузере.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы