typescript - TypeScript 中的 setTimeout 应该使用什么返回类型?
问题描述
考虑以下代码:
const timer: number = setTimeout(() => '', 1000);
打字稿抛出一个错误:Type 'Timer' is not assignable to type 'number'.
快速查找告诉我setTimeout
返回NodeJS.Timer
.
但是如果我在做基于浏览器的开发,使用起来NodeJS.Timer
感觉不对。setTimeout
在不诉诸any
声明的情况下,哪个是正确的类型定义或返回类型?
解决方案
最简单的解决方案是允许类型推断起作用并且根本不指定任何类型。如果您需要指定一个类型,因为浏览器和节点声明之间的类型不一致,您可以使用ReturnType
指定变量的类型是返回类型是什么setTimeout
:
const timer: ReturnType<typeof setTimeout> = setTimeout(() => '', 1000);
或者,window.setTimeout
也可以用来代替 just setTimeout
。它返回正确的返回类型。
推荐阅读
- azure - 如何使用 api 将订阅的贡献者角色分配给服务主体或如何使用订阅对象
- php - nginx auth_request 示例
- c# - 将数据库连接字符串从 appconfig.json 迁移到环境变量
- javascript - 人脸检测未显示在正确位置
- javascript - Bokeh source.change.emit() Uncaught TypeError: value.toFixed
- python - Mypy 抱怨默认参数值与省略号不兼容
- postgresql - 插入或更新或删除后的postgresql触发器
- javascript - 如何在 Vue js 3 中使用 Vue Draggabale
- c# - PactNet 合同测试失败并出现 HttpRequestException 和 SocketException
- swift - 如何在部分位于导航栏之外的导航栏中添加图像?