javascript - 使用可能存在或不存在的接口修改全局
问题描述
我在浏览器和节点之间共享一些代码,如果可用,我想使用performance.now()
而不是。Date.now()
不幸的是,在节点中,performance
不可用,打字稿给我一个错误。我可以添加整个dom
库,但这会引入所有内容,我想避免这种情况,因为它最终肯定会掩盖真正的错误。那么,我怎样才能修改全局命名空间说:“嘿,这个名字performance
可能存在也可能不存在”
对于它的价值,这是我试图在节点和浏览器中干净编译的行:
const lastUpdate = typeof performance !== undefined ? performance.now() : Date.now();
这是我得到的错误:
错误 TS2304:找不到名称“性能”。
解决方案
返回的值typeof
是一个字符串'undefined'
,而不是 的值undefined
。所以你的比较应该是:
const lastUpdate = typeof performance !== 'undefined' ? performance.now() : Date.now();
来自MDN:
typeof 运算符返回一个字符串,指示未计算的操作数的类型。
推荐阅读
- java - Kafka 流式传输 - TimeoutException: Expiring * record(s) for TOPIC:* ms has been passed since batch creation
- less - 在不同域之间导入 LESS 文件时遇到问题
- javascript - JS:从索引位置打印值,从数组
- python - 我怎么能得到用户插入的条件运算符
- asp.net - 如何在 asp.net mvc 中将 ViewModal 绑定到下拉列表
- pandas - 从镶木地板读取熊猫数据帧比从泡菜文件读取慢
- node.js - Firebase 部署找不到 serviceAccountKey
- javascript - 尝试将生成的 PDF 发送到谷歌云功能以使用 nodemailer 发送电子邮件
- spring - 有没有办法在 Spring 属性值中转义 SpEL 字符“#{”
- c - valgrind:条件跳转或移动取决于使用 strlen() strncat() 的未初始化值