如何在打字稿中使用`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
}

如果在应有的地方添加分号,问题就解决了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章