6

以下の WebWorkers API の入力があります。ファイルの一番下には、self オブジェクトを説明する行があります。同じ変数名が lib.d.ts で使用されており、WebWorker.d.ts への参照を追加すると、DedicatedWorkerGlobalScope ではなく、self が Window 型であることがわかります。この定義をオーバーライドするには、何を修正すればよいですか?

interface WorkerNavigator extends NavigatorID, NavigatorOnLine {
}

interface WorkerUtils extends WindowTimers, WindowBase64 {
    importScripts: (...urls: string[]) => void;
    navigator: WorkerNavigator;
}

interface WorkerLocation {
    href: string;
    protocol: string;
    host: string;
    hostname: string;
    port: string;
    pathname: string;
    search: string;
    hash: string;
}

interface WorkerGlobalScope extends EventTarget, WorkerUtils {
    self: WorkerGlobalScope;
    location: WorkerLocation;

    close: () => void;
    onerror: Function;
    onoffline: Function;
    ononline: Function;
}

interface DedicatedWorkerGlobalScope extends WorkerGlobalScope {
    postMessage:(message:any, ...args:any[])=>void;
    onmessage: Function;
}

declare var self: DedicatedWorkerGlobalScope;

UPD: 上記のコードにもかかわらず、次の方法を使用する必要があります。self の定義がオーバーライドされていないようです

/// <reference name="WebWorkers.d.ts" />

declare var self: DedicatedWorkerGlobalScope;
4

1 に答える 1