2016-09-11 5 views
1

webworker-threads npmライブラリの定義ファイルを書き込もうとしています。そのドキュメントでは、次のように新しいワーカーを作成できることを言う:evalでtypescriptタイピングを処理する

let worker = new Worker(function() { 
    this.postMessage('worker created'); 
    this.close(); 
}); 

トリックは、労働者を構築するために使用され、その関数の内部ですべてが自己変数を介して労働者自身へのアクセス権を持っていることです。これはコード内でnew Worker()に渡された引数が関数であるかどうかをチェックし、そうであればevalを呼び出すことによって実行されます。 hereを参照してください。

私はこれを私のタイピングでどのように複製するのかと思います。これまでのところ私はこれを持っているが、それは動作しません:活字体2.0では

export class Worker { 
    public onmessage: (event: any) => any; 

    public thread: Thread; 

    constructor(fn?: Worker | string); // <= Doesn't work because technically the function passed in isn't a worker, it just accesses the new Worker as if it were. 

    public postMessage(data: any): void; 

    public terminate(): void; 

    public addEventListener(type: string, cb: (event: any) => any): void; 

    public removeEventListener(type: string): void; 
} 
+0

あなたは何をしようとしていますか?あなたは彼らがやっていることを模倣したいのですか、それを使用しようとしていますか?彼らはすでに 'Worker'クラスを提供していますが、なぜあなた自身で作成する必要がありますか? –

+0

あなたは実際に 'eval'の権利を実際に使っていないことに気付いていますか?それは彼らのCコードでのevalの実装です –

+0

@NitzanTomerそれでもやはり同様のことが成り立ちます。関係なく、私が探していた答えはRemによって与えられました – watzon

答えて

3

をリリース候補TS changelogで、今あなたが書くことができること:私はこれをキャストすることをお勧めすることができ、古い活字体のバージョンでは

constructor(fn?: (this: Worker) => any); 

をコールバック内のワーカーに送信します。

+0

これはまさに私が探していたものです! – watzon

+0

関連する[セクション](https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#specifying-the-type-of-this-for-functions) – artem

関連する問題