1

これは私のコードです:

  let errorBadRequest = new Error("Bad request");

  res.statusCode = 400;
  errorBadRequest.errors = err.details.reduce(function(prev, current) {
    prev[current.path] = current.message;
    return prev;
  }, {});
  throw errorBadRequest;

エラーインスタンスで属性を拡張したかったerrorのですが、tscは言ったjoi-utils.ts(21,23): error TS2339: Property 'errors' does not exist on type 'Error'.

の構造errors{fieldname: fieldmsg}、決定するのは私のjoiリクエストスキーマによるものです。

typescriptコンパイラからのエラーを解決するにはどうすればよいですか? インターフェイスを宣言し、属性を指定する必要があると思います。

4

2 に答える 2

1

プロパティ「エラー」はタイプ「エラー」には存在しません。

という名前のファイルを作成しerror-extension.d.ts、次のものを用意します。

interface Error {
    errors: Error;
} 

詳細: https://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html

于 2016-02-08T02:36:48.323 に答える
0

クラスを初期化するときにError、実際にはクラスに含まれていないことがわかりerrorsましたError。インターフェイスを作成し、errorsオプションに設定する必要があります。

これが私の解決策です:

interface IJoiErrorException extends NodeJS.ErrnoException {
  errors?: Object;
}

const errorBadRequest: IJoiErrorException = new Error("Bad request");
于 2016-02-08T02:49:10.873 に答える