如何将变量转换为特定类型以说服打字稿无处不在?
How to cast a variable to a particular type to convince typescript that everwhere?
出于 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。
出于 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。