2016-12-02 6 views
1

シンプルな共有ワーカーのデモを簡単なJSで作成し、TSプロジェクトに変更できるかどうかを確認しました。それがd.tsファイルなどと関係があるかどうかはわかりません。Javascript SharedWorkersデモからTypescriptデモの問題

@ 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:文字列、名前:プロパティ「SharedWorkerは」「タイプ{新しい(stringUrl存在しないのですか? :文字列|未定義):SharedWorker; Prototype SharedWorker; } '

これはd.tsファイルに問題がありますか、あまりにも多くのSharedWorkerが宣言されています(namespace、interface、& var)?

インポートが異なるかどうか。私が使用した以前のインポートは、インポートした実際のモジュール用でしたが、共有作業者はnpmでインストールする外部モジュールではありません。あなたのコードがあるべきそのタイプの定義に基づいて

+0

今、あなたが問題を解決したことを、あなたはデモの結果にリンクしてくださいだろうか? – Seanny123

答えて

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'); 
    } 
}