如何定义可取值为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
相关产品推荐
相关产品推荐

