出于IE的原因,我需要构建一个自定义错误,但是,尽我所能,必须使用构造函数检查该错误。
customError instanceof CustomError; // false
customError.constructor === CustomError; // true
现在如何在if语句中说服打字稿呢?
if (customError.constructor === CustomError) {
customError.customMethod1() // typescript complaints
customError.customMethod2() // typescript complaints
customError.customMethod3() // typescript complaints
customError.customMethod4() // typescript complaints
}
编辑:
背景是当您编译到ES5时,某些继承不能兼容。
有没有一种方法可以强制转换一次,而不必每次使用变量时都使用as
?
到目前为止,使用它的唯一方法是:
const myCustomError = (customError as CustomError)
接受其他好主意。
function isCustomError(x: any): x is CustomError {
return x.constructor === CustomError;
}
并使用它:
if (isCustomError(err)) {
err.customMethod1();
}
参见此playground。