簡體   English   中英

如何在接口中未定義的 typescript class 中插入屬性

[英]how to insert a property in typescript class which is not defined in the interface

我有一個使用 typescript 的快速應用程序。 我正在嘗試使用自定義錯誤處理程序,因為我正在嘗試擴展錯誤 class。

錯誤響應.ts

export default class ErrorResponse extends Error {
    constructor(message, statusCode, errorCode) {
        super(message);
        this.statusCode = statusCode;
        this.errorCode = errorCode;
    }
}

typescript 給出錯誤,因為我擴展的錯誤接口具有以下定義

interface Error {
    name: string;
    message: string;
    stack?: string;
}

目前對於解決方法,我已將其設為 javascript 文件。 但是如何將其用作 typescript 文件並正確使用它。 以便屬性 statusCode 和 errorCode 不會給出 ts 錯誤。

使用的版本 "typescript": "^4.0.3"

您似乎想擴展Error class 並增加兩個新字段,正確的做法是:

TS Playground 鏈接

export default class ErrorResponse extends Error {
  constructor(
    message: string,
    public statusCode: number,
    public errorCode: string
  ) {
    super(message);
  }
}

const e = new ErrorResponse("something", 404, "Not found");
e.errorCode; // works
e.message; // works
e.name; // works

Class Error是一個接口ErrorResponse是一個class 所以ErrorResponse不能擴展Error但可以實現它。

export default class ErrorResponse implements Error { // class 'implements' interface
    constructor(message, statusCode, errorCode) {
        this.message = message;
        this.statusCode = statusCode;
        this.errorCode = errorCode;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM