如何在TypeScript中创建ErrorEvent?

时间:2016-12-02 15:07:08

标签: typescript error-handling typescript-typings

根据这篇文章

How to properly initialize en ErrorEvent in javascript?

您应该可以使用以下代码创建EventError

var error = new ErrorEvent('oh nose', {
    error : new Error('AAAHHHH'),
    message : 'A monkey is throwing bananas at me!',
    lineno : 402,
    filename : 'closet.html'
});

但是,如果您在TypeScript游乐场中尝试此操作:

https://www.typescriptlang.org/play/#src=var%20error%20%3D%20new%20ErrorEvent('oh%20nose'%2C%20%7B%0A%20%20%20%20error%20%3A%20new%20Error('AAAHHHH')%2C%0A%20%20%20%20message%20%3A%20'A%20monkey%20is%20throwing%20bananas%20at%20me!'%2C%0A%20%20%20%20lineno%20%3A%20402%2C%0A%20%20%20%20filename%20%3A%20'closet.html'%0A%7D)%3B

它说Supplied parameters do not match any signature of call target.

即使这个简单的例子也不编译:

var error = new ErrorEvent('oh nose');

我试图通过查看类型定义

来弄明白

https://github.com/Microsoft/TypeScript/blob/master/lib/lib.es6.d.ts#L9612

但无法弄清楚。

在TypeScript中创建完全合法的EventError会缺少什么?

2 个答案:

答案 0 :(得分:3)

lib.es6.d.ts 未与spec完全一致。

您应该在TypeScript's github上记录问题,但目前您可以编辑 lib.es6.d.ts 以包含修复:

// add this interface
interface ErrorEventInit {
    // ...put the properties here...
}

// edit this declare var's new signature
declare var ErrorEvent: {
    new(type: string, eventInitDict?: ErrorEventInit): ErrorEvent;
    prototype: ErrorEvent;
}

答案 1 :(得分:0)

ErrorEvent是从Event扩展的类型,并在内部使用ErrorEventInit。这是宣言 https://github.com/microsoft/TSJS-lib-generator/blob/master/baselines/dom.generated.d.ts#L5410

尝试一下-

[["a", "b"], ["l", "m"]]