typescript - 为什么打字稿将其视为从未
问题描述
我有一些类定义如下:
abstract class HttpError extends Error {
abstract getHttpCode(): number;
}
class OkHttpError extends HttpError {
getHttpCode(): number { return 200; }
}
class NotFoundHttpError extends HttpError {
getHttpCode(): number { return 404; }
}
class DomainError extends Error { }
class CommandNotFound extends DomainError { }
DomainError
我编写了将我的 s 映射到s的函数HttpError
。问题是,当我使用isCommandNotFound
而不是error instanceof CommandNotFound
typescript 尖叫时,error
最后一行有 type never
。我不懂为什么。有人可以向我解释吗?映射函数和类型保护定义如下:
const mapDomainToHttpError = (error: DomainError): HttpError => {
if (isCommandNotFound(error)) {
return new NotFoundHttpError(error.message);
}
return new OkHttpError(error.message);
}
const mapDomainToHttpError = (error: DomainError): HttpError => {
if (error instanceof CommandNotFound) {
return new NotFoundHttpError(error.message);
}
return new OkHttpError(error.message);
}
const isCommandNotFound = (subject: Error): subject is CommandNotFound => subject instanceof CommandNotFound
解决方案
推荐阅读
- python - 无法使用递归在 python 列表中生成数字组合
- qdbus - 如何在 DBus 中获取 QDBusObjectPath?
- html - HTML 显示一半的 div
- openlayers - 在构造几何时在循环内重绘几何
- c# - 如何在 C#/.NET 中找到文件的真实(区分大小写)名称?
- compiler-errors - 错误:靠近“初始”:语法错误,意外的初始
- python - np.where() 使用字符串和多个条件在 Excel (python) 中创建新列
- mongodb - 在 YCSB 上编写个性化工作负载
- python - 使用特定视频调用 sendMediaGroup 后 Telegram API BadRequest 错误
- spring-boot - 如何编写用于过滤的嵌入式类查询