Kei*_*ith 12 web-worker typescript typescript-typings
我有一个我想用 TypeScript 编写的网络工作者。
问题是Worker.postMessage- TypeScript 假设每个脚本都将在窗口上下文中加载,因此 expect Window.postMessage,它具有不同的语法。
这意味着当我尝试使用postMessage.
有办法解决这个问题,例如通过重新定义函数 declare function postMessage(message: any),但其中大多数充其量只是丑陋的杂物 - TS 的重点是检查类型,声明我自己的虚拟对象会打败它。
出于同样的原因 - window(及其上下文中的所有内容)在此上下文中不可用,并且应被 TS 识别为错误。例如alert('message')应该导致 TS 警告,而不是运行时错误。
有什么办法可以让文件获取实际定义(来自webworker.es2016.d.ts)并以某种方式告诉 TypeScript 这段代码将在工作上下文中运行而不是在窗口中运行?
Tit*_*mir 11
如果您检查编译器选项,您将看到--lib. 问题是你不能同时为 web worker 编译常规代码和代码。您可以将您的 Web Worker 代码放在一个单独的文件夹中,并单独将其tsconfig.json合并:
"compilerOptions" : {
"target": "es2015",
"lib": [
"es2015"
"webworker"
]
}
Run Code Online (Sandbox Code Playgroud)
或者您可以为 webworker 代码显式调用编译器:
tsc .\sample.ts -lib es2015,webworker
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6323 次 |
| 最近记录: |