gpt4 book ai didi

Javascript SharedWorkers 演示到 Typescript 演示问题

转载 作者:搜寻专家 更新时间:2023-10-30 21:52:25 25 4
gpt4 key购买 nike

我用纯 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com