Javascript SharedWorkers 演示到 Typescript 演示问题
Javascript SharedWorkers demo to Typescript demo issues
我用纯 JS 创建了一个简单的共享工作程序演示,我决定看看是否可以将其更改为 TS 项目,但从一开始我就遇到了一个问题,我不确定是否可以使用 d.ts 文件或其他文件。
我已经安装了@types/sharedworkers 定义(npm install --save @types/sharedworker)。
我正在使用 Typescript 2.1.1.
如果我创建一个简单的 class 例如
class MyTestClass {
private worker : SharedWorker;
constructor() {
this.worker = new SharedWorker( 'JS_code_to_load');
}
}
然后我的 IDE (IntelliJ) 会自动完成导入并生成 -
导入 SharedWorker = SharedWorker.SharedWorker;
通过查看 SharedWorker 文件,这似乎是有道理的 - Github sharedworker d.ts
但发生的是错误 - TS2339:属性 'SharedWorker' 在类型 '{ 上不存在 new (stringUrl: string, name?: string | undefined): SharedWorker; SharedWorker 原型; }'
这是 d.ts 文件的问题吗,声明了太多 SharedWorker(命名空间、接口和变量)?
导入是否应该不同。我以前使用的导入是针对我导入的实际模块,但共享工作器不是您使用 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');
}
}
我用纯 JS 创建了一个简单的共享工作程序演示,我决定看看是否可以将其更改为 TS 项目,但从一开始我就遇到了一个问题,我不确定是否可以使用 d.ts 文件或其他文件。
我已经安装了@types/sharedworkers 定义(npm install --save @types/sharedworker)。 我正在使用 Typescript 2.1.1.
如果我创建一个简单的 class 例如
class MyTestClass {
private worker : SharedWorker;
constructor() {
this.worker = new SharedWorker( 'JS_code_to_load');
}
}
然后我的 IDE (IntelliJ) 会自动完成导入并生成 - 导入 SharedWorker = SharedWorker.SharedWorker;
通过查看 SharedWorker 文件,这似乎是有道理的 - Github sharedworker d.ts
但发生的是错误 - TS2339:属性 'SharedWorker' 在类型 '{ 上不存在 new (stringUrl: string, name?: string | undefined): SharedWorker; SharedWorker 原型; }'
这是 d.ts 文件的问题吗,声明了太多 SharedWorker(命名空间、接口和变量)?
导入是否应该不同。我以前使用的导入是针对我导入的实际模块,但共享工作器不是您使用 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');
}
}