我有一个服务人员,它找不到全局变量。我不确定为什么,有人可以解释为什么看不到全局变量以及如何解决它吗?
declare var myGlobalVar: Function;
const myFunction = async() {
//doing stuff
//calling myGlobalVar which give me following error
}
运行serviceWorker时出现错误:
:Uncaught (in promise) ReferenceError: myGlobalVar is not defined
答案 0 :(得分:1)
这不是TypeScript问题(...,不是直接的),这是JavaScript问题。
declare
告诉TS编译器进行调试,并相信您该变量将在运行时可用。这是您与代码之间的合同。它不会不为运行时提供任何内容。由于这个原因,declare
d个变量被称为“环境变量”,它们在编译过程中消失了。
有关Ambient Declarations的更多信息,请参见此。
在JavaScript方面,您缺少myFunction
的声明。例如,
<script type="text/javascript">
function myGlobalVar() {
// whatever
}
</script>
<script src="../bundle.js"></script>
其中bundle.js
是tsc
的输出。