You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定义可取值为boolean、函数、定时器返回值的delay变量类型?

TypeScript delay变量类型标注方案

你给出的业务代码如下:

let delay = false
// ...
delay && clearTimeout(delay)
delay = setTimeout(() => {
    callfunc(string, signal)
}, 2000)

该变量存在三种可能的取值类型,需要使用 TypeScript 联合类型标注,具体写法区分运行环境:

  • 浏览器环境:浏览器中 setTimeout 返回数字类型的定时器ID,标注为:
    let delay: boolean | Function | number = false
    
  • Node.js 环境:Node.js 中 setTimeout 返回专属的 Timeout 实例对象,标注为:
    let delay: boolean | Function | NodeJS.Timeout = false
    

如果业务逻辑中该变量只会被赋值为 false 这一个布尔值,可以把布尔类型收窄为 false 字面量类型,进一步提升类型校验严格度:

// 浏览器环境严格写法示例
let delay: false | Function | number = false

clearTimeout 方法本身同时兼容浏览器数字ID、Node.js Timeout实例两种入参,你现有逻辑中的判断调用写法不需要做调整。

内容的提问来源于stack exchange,提问作者angry kiwi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:15:03