【问题标题】:serviceWorker can't find global variableserviceWorker 找不到全局变量
【发布时间】:2020-01-15 16:00:37
【问题描述】:
我有一个服务人员,但它找不到全局变量。我不知道为什么,有人可以解释为什么它看不到全局变量以及如何修复它?
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
【问题讨论】:
标签:
typescript
service-worker
angular-service-worker
【解决方案1】:
这不是 TypeScript 问题(……嗯,不是直接问题),这是 JavaScript 问题。
declare 告诉 TS 编译器不要管它,并相信你该变量将在运行时可用。这是你和你的代码之间的契约。它确实不为运行时提供任何东西。出于这个原因,declared 变量被称为“环境” - 它们在编译期间消失。
有关Ambient Declarations 的更多信息,请参阅此处。
在 JavaScript 方面,您缺少 myFunction 的声明。例如,
<script type="text/javascript">
function myGlobalVar() {
// whatever
}
</script>
<script src="../bundle.js"></script>
其中bundle.js 是tsc 的输出。