我为postMessage
提供了重载声明,以表示仅消息签名(而不是lib.d.ts三参数版本)。
declare function postMessage(message: any): void;
我没有视觉错误,红色曲线等,但我确实遇到了构建错误。
构建:提供的参数与呼叫目标的任何签名都不匹配。
构建:无法为'call'表达式选择重载。
在这一行:
postMessage(message);
这是选择我提供的重载或我做些蠢事的错误吗?
答案 0 :(得分:3)
似乎是编译器的有效错误报告。以下工作正常:
declare function foo(message: any, targetOrigin: string, ports?: any): void;
declare function foo(message: any): void;
foo('asdf');
但是下面的编译错误
declare function postMessage(message: any): void;
postMessage('asdf');
同样适用于lib.d.ts
根目录的其他函数,例如:
declare function blur(message: any): void;
blur('asdf');
几乎就好像declare
甚至没有被解析一样。以下给出了相同的错误:
postMessage('asdf');
使用no-default-lib
引用标记:
/// <reference no-default-lib="true"/>
declare function postMessage(message: any): void;
postMessage('asdf');
答案 1 :(得分:2)
临时工作......
这是工人的临时工作......
(function(self: Worker){
self.postMessage('a');
self.postMessage({ etc: 'a' });
}(<any>self));
不理想,但它有效,因为Worker
界面在postMessage
上下文而不是self
上下文时具有正确的window
定义。