首页 > 解决方案 > TypeScript 中的 setTimeout 应该使用什么返回类型?

问题描述

考虑以下代码:

const timer: number = setTimeout(() => '', 1000);

打字稿抛出一个错误:Type 'Timer' is not assignable to type 'number'.快速查找告诉我setTimeout返回NodeJS.Timer.

但是如果我在做基于浏览器的开发,使用起来NodeJS.Timer感觉不对。setTimeout在不诉诸any声明的情况下,哪个是正确的类型定义或返回类型?

标签: typescript

解决方案


最简单的解决方案是允许类型推断起作用并且根本不指定任何类型。如果您需要指定一个类型,因为浏览器和节点声明之间的类型不一致,您可以使用ReturnType指定变量的类型是返回类型是什么setTimeout

const timer: ReturnType<typeof setTimeout> = setTimeout(() => '', 1000);

或者,window.setTimeout也可以用来代替 just setTimeout。它返回正确的返回类型。


推荐阅读