- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我用纯 JS 创建了一个简单的共享工作程序演示,我决定看看是否可以将其更改为 TS 项目,但从一开始我就遇到了一个问题,我不确定它是否与d.ts 文件或其他文件。
我已经安装了@types/sharedworkers 定义(npm install --save @types/sharedworker)。我正在使用 Typescript 2.1.1。
如果我创建一个简单的类,例如
class MyTestClass {
private worker : SharedWorker;
constructor() {
this.worker = new SharedWorker( 'JS_code_to_load');
}
}
然后我的 IDE (IntelliJ) 会自动完成导入并生成 -import SharedWorker = SharedWorker.SharedWorker;
从查看 SharedWorker 文件来看,这似乎是有道理的 - Github sharedworker d.ts
但发生的是一个错误 - TS2339:属性 'SharedWorker' 在类型 '{ new (stringUrl: string, name?: string | undefined): SharedWorker; 上不存在; SharedWorker 原型(prototype); }'
这是 d.ts 文件的问题,是否声明了太多 SharedWorker( namespace 、接口(interface)和变量)?
导入是否应该不同。我以前使用的导入是针对我导入的实际模块,但共享工作器不是您使用 npm 安装的外部模块。
最佳答案
基于该类型定义,您的代码应该是:
class MyTestClass {
private worker : SharedWorker.SharedWorker;
constructor() {
this.worker = new SharedWorker( 'JS_code_to_load');
}
}
完成:
declare namespace SharedWorker {
interface AbstractWorker extends EventTarget {
onerror: (ev: ErrorEvent) => any;
}
export interface SharedWorker extends AbstractWorker {
/**
* the value it was assigned by the object's constructor.
* It represents the MessagePort for communicating with the shared worker.
* @type {MessagePort}
*/
port: MessagePort;
}
}
declare var SharedWorker: {
prototype: SharedWorker.SharedWorker;
/***
*
* @param {string} stringUrl Pathname to JavaScript file
* @param {string} name Name of the worker to execute
*/
new (stringUrl: string, name?: string): SharedWorker.SharedWorker;
};
class MyTestClass {
private worker : SharedWorker.SharedWorker;
constructor() {
this.worker = new SharedWorker( 'JS_code_to_load');
}
}
关于Javascript SharedWorkers 演示到 Typescript 演示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40938603/
MDN Documentation on SharedWorkers状态: The SharedWorker interface represents a specific kind of worke
我需要做一些繁重的工作,发现重新格式化整个代码有点乏味,并且想知道“SharedWorkers 可以使用其他共享工作人员的全局变量吗?”。 如果可以的话,有人可以做一个简单的演示吗?我对 Shared
假设我的 html 文件来自 http://foo.com/index.html ,其中有一个标记为http://bar.com/bar.js 。在 bar.js 中,我想启动一个 SharedWor
我曾与 Worker objects before 合作过,而且非常简单,尤其是教程。 所以下一步自然是 work with SharedWorkers 。我已经把它记下来了,但现在 SharedWo
互联网上有很多关于 SharedWorker 和 StackOverflow 的讨论和教程,但没有一个真正实现了最基本的目标——在两个共享 Worker 之间直接传递数据。 对我来说,SharedWo
在 Chrome 和 Firefox 中 const myWorker = new SharedWorker( "sharedWorkerChat.js" ); const port
使用给定的 tsconfig.json, { "compilerOptions": { "lib": ["es2015", "dom"] }, "files": [
我正在对 HTML5 Web Worker 进行一些研究。我让“普通”工作人员运行良好,但是我似乎无法初始化 SharedWorker。我已经在最新版本的 Chrome 和 Firefox 中尝试过,
我想创建一个 SharedWorker,如一本优秀书籍的一章所述:https://github.com/getify/You-Dont-Know-JS/blob/master/async%20%26%
SharedWorker 使用 Message Port 与 ParentWorker 交换消息。 父工 var port = new SharedWorker('/worker.js').port;
我用纯 JS 创建了一个简单的共享工作程序演示,我决定看看是否可以将其更改为 TS 项目,但从一开始我就遇到了一个问题,我不确定它是否与d.ts 文件或其他文件。 我已经安装了@types/share
使用 new Worker("whatever.js") 生成 WebWorker 工作正常,但 new SharedWorker("whatever.js") 返回错误:ReferenceError
将 SharedWorker 添加到 @angular/cli >1.2 生成的项目的具体步骤是什么。我希望 SharedWorker 在 TypeScript 中定义(具有完整/正确的类型定义编辑器
为什么 Safari 放弃了对 SharedWorker 的支持? 是否有任何有效的 polyfill 使用例如 localStorage 和 StorageEvent 作为通信端口? (是的,shi
在我见过的所有例子中,它们都与此类似 onconnect = function(e) { var port = e.ports[0]; port.onmessage = functio
我正在尝试在 SharedWorker 中实现服务器发送事件 (SSE)。 实现在谷歌浏览器中没有问题。但是,它在 FireFox 中根本不起作用。 当我尝试让它在 FireFox 中运行时,我在控制
我试图让每个在我的应用程序上打开多个选项卡的用户只保持一个连接事件,该应用程序使用 Pusher 和 Laravel Echo,我能够按照下面的文章和示例项目让它在测试项目上工作。 https://b
我是一名优秀的程序员,十分优秀!