Javascript SharedWorkers 演示到 Typescript 演示问题

Posted

技术标签:

【中文标题】Javascript SharedWorkers 演示到 Typescript 演示问题【英文标题】:Javascript SharedWorkers demo to Typescript demo issues 【发布时间】:2016-12-02 18:16:36 【问题描述】:

我用普通的 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) 会自动完成导入并使其 - 导入 SharedWorker = SharedWorker.SharedWorker;

查看 SharedWorker 文件似乎是有道理的 - Github sharedworker d.ts

但是会发生错误 - TS2339: 类型 ' new (stringUrl: string, name?: string | undefined): SharedWorker; 上不存在属性 'SharedWorker'原型 SharedWorker; '

这是 d.ts 文件的问题吗,声明了太多 SharedWorker(命名空间、接口和 var)?

如果导入不同。我之前使用的导入是针对我导入的实际模块,但共享工作器不是您使用 npm 安装的外部模块。

【问题讨论】:

既然你已经解决了问题,你能链接到演示结果吗? 【参考方案1】:

基于该类型定义,您的代码应该是:

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 演示问题的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript介绍

javascript的题。

javascript JavaScript isset()等效: - JavaScript

JavaScript 使用JavaScript更改CSS(JavaScript)

JavaScript之基础-1 JavaScript(概述基础语法)

前端基础-JavaScript的基本概述和语法