javascript - 如何在打字稿中使用`super()`
问题描述
我想简单地扩展标准的 javascriptError
类。我想添加另一个属性:code
,但不知何故,打字稿不让我这样做。
export class HttpError extends Error {
public message: string
public errorCode: number
constructor(message: string, errorCode: number) {
super(message) // Add a
(this as any).code = errorCode
}
}
打字稿错误位于super(message)
:
This expression is not callable.
Type 'void' has no call signatures.ts(2349)
但是,在打字稿文档中:https ://www.typescriptlang.org/docs/handbook/classes.html 他们也这样做。
我的代码有什么问题?
解决方案
在我看来,这是一个很好的例子,说明为什么省略分号不是一个好习惯。虽然 Javascript 支持自动分号插入,但它经常会导致像这样的意外错误。
在编译器看到它时重新格式化您的代码,错误变得明显:
constructor(message: string, errorCode: number) {
super(message)(this as any).code = errorCode
}
如果你在它们应该在的地方添加分号,问题就会消失。
推荐阅读
- android - 如何编辑如下所示的 TextView?
- database - 如何从反序列化突变错误中恢复 Cassandra:
- php - PHP 从 pubsub 获取数据
- c++ - 在不移动鼠标的情况下将鼠标单击事件发送到 Linux 中的其他窗口
- google-maps - 从 ReactNative 应用启动 Google 地图应用
- android - 谷歌地图列表结果
- c++ - 为模板化内部类重载非成员运算符
- java - java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map; 移动eclipse工作区后出错
- gcc - 如何将 GCC 中的程序链接到预链接库?
- c++ - C++ 草稿中的词包是什么?