使用ECMAScript 6语言级别运行WebStorm 2019.1。
如果我执行以下操作:
new Error('Foobar');
它不会产生任何警告。但是,如果我执行以下操作:
class SomeError extends Error {
constructor(message) {
super(message);
}
}
然后WebStorm抱怨对超级构造函数的调用,说无效的参数数量,预期为0 。
我也尝试使用传播参数,例如
constructor(...args) {
super(...args);
}
这给出了相同的结果-预期 0个参数。
检查lib.es5.d.ts
文件后,Error的界面如下所示:
interface Error {
name: string;
message: string;
stack?: string;
}
interface ErrorConstructor {
new(message?: string): Error;
(message?: string): Error;
readonly prototype: Error;
}
declare var Error: ErrorConstructor;
这对我来说似乎正确。那么,为什么IDE坚持要求在扩展Error
时,超类构造函数必须没有任何参数?当然,我可以改而this.message = message;
,但是我对正在发生的事情感到好奇。
这是IDE的问题吗?我有一些语言级别兼容性设置吗?还是我很愚蠢?