我在浏览器和节点之间共享一些代码,如果可用,我想使用performance.now()
而不是Date.now()
。不幸的是,在节点中,performance
不可用,打字稿给了我一个错误。我可以添加整个dom
库,但是这会引入所有内容,我想避免它,因为它肯定会掩盖真正的错误。那么,我怎样才能修改全局命名空间来说:“嘿,有这个名字可能存在也可能不存在的performance
”
对于它的价值,这是我试图在节点和浏览器中干净地编译的行:
const lastUpdate = typeof performance !== undefined ? performance.now() : Date.now();
这是我得到的错误:
错误TS2304:找不到名称'performance'。
typeof
返回的值是一个字符串'undefined'
,而不是undefined
的值。所以你的比较应该是:
const lastUpdate = typeof performance !== 'undefined' ? performance.now() : Date.now();
来自MDN:
typeof运算符返回一个字符串,指示未评估的操作数的类型。