这个游乐场链接过去常常在TS 0.9.5之前工作,现在我无法弄清楚如何使它适用于我的生活。
本质:
window.onerror= function(eventOrMessage: any, source: string, fileno: number){
// place your body here
};
...返回错误:
错误8无法转换'(eventOrMessage:any,source:string,fileno: 数字)=> void'to'ErrorEventHandler':调用类型的签名 '(eventOrMessage:any,source:string,fileno:number)=>无效'和 'ErrorEventHandler'不兼容。
答案 0 :(得分:5)
史蒂夫芬顿提到。或者,您可以使用两个函数之间的公共签名:
window.onerror= function(eventOrMessage: any, source: string, fileno: number, colnumber?:number):any{
// place your body here
};
答案 1 :(得分:3)
这看起来像lib.d.ts
中的一个错误(甚至可能是编译器) - 因为它们已经更改了最新分支中ErrorEventHandler
的定义。
在0.9.5中它是:
interface ErrorEventHandler {
(event: Event, source: string, fileno: number, columnNumber: number): void;
(message: any, uri: string, lineNumber: number, columnNumber?: number): boolean;
}
但是在主分支中它是:
interface ErrorEventHandler {
(event: Event, source: string, fileno: number, columnNumber: number): void;
}
与此同时,您可以使用以下hack(或编辑您的lib.d.ts文件来更新它)。
interface TempErrorEventHandler {
(event: Event, source: string, fileno: number, columnNumber: number): void;
}
var test1: TempErrorEventHandler =
function (event: Event, source: string, fileno: number, columnNumber: number): void {
}
window.onerror = <ErrorEventHandler> test1;
答案 2 :(得分:0)
基于basarat解决方案(我只是添加可选的错误参数,可能会有所帮助):
window.onerror = function(errorMsg: any, url: string, lineNumber: number, colNumber: number, error: { stack?: string } = null) {
// .. error handler
};