以下の 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;