typescript - TypeScript 中的 setTimeout 应该使用什么返回类型?

标签 typescript

考虑以下代码:

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

Typescript 抛出错误: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 而不仅仅是 setTimeout。它返回正确的返回类型。

关于typescript - TypeScript 中的 setTimeout 应该使用什么返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51040703/

相关文章:

node.js - 如何禁用 TypeScript Object.defineProperty(exports, "__esModule", { value : true })?

typescript - 有没有办法使用 npm 脚本来运行 tsc -watch && nodemon --watch?

javascript - RxJS5: .combineLatest() 有投影功能?

typescript - 当其类型定义未声明模块时如何在 TypeScript 中导入库?

html - 如何导航(重定向)到 Angular 中的另一个页面?

javascript - 将数组中的对象属性推送到另一个对象数组中

javascript - 如何在 Typescript 中获取自动创建的 Javascript 变量?

javascript - Angular Video 对事件发出多个请求

javascript - 如何找到node中递归运行的函数?

typescript - 根据枚举值有条件地禁止函数参数