使用可能存在或不存在的接口修改全局

问题描述 投票:3回答:1

我在浏览器和节点之间共享一些代码,如果可用,我想使用performance.now()而不是Date.now()。不幸的是,在节点中,performance不可用,打字稿给了我一个错误。我可以添加整个dom库,但是这会引入所有内容,我想避免它,因为它肯定会掩盖真正的错误。那么,我怎样才能修改全局命名空间来说:“嘿,有这个名字可能存在也可能不存在的performance

对于它的价值,这是我试图在节点和浏览器中干净地编译的行:

const lastUpdate = typeof performance !== undefined ? performance.now() : Date.now();

这是我得到的错误:

错误TS2304:找不到名称'performance'。

javascript node.js typescript browser typescript-typings
1个回答
2
投票

typeof返回的值是一个字符串'undefined',而不是undefined的值。所以你的比较应该是:

const lastUpdate = typeof performance !== 'undefined' ? performance.now() : Date.now();

来自MDN

typeof运算符返回一个字符串,指示未评估的操作数的类型。

© www.soinside.com 2019 - 2024. All rights reserved.