2017-11-22 29 views
0

何が問題なのか分かりませんが、instanceofはうまくいかないようです。「Instanceof」が正しく動作しない

AppError.ts

class AppError extends Error { 
    public statusCode; 

    constructor(message, statusCode) { 
     super(message); 

     this.name = this.constructor.name; 

     Error.captureStackTrace(this, this.constructor); 

     this.statusCode = statusCode || 500; 
    } 
} 

export default AppError; 

BadRequestError.ts

import AppError from "./AppError"; 

class BadRequestError extends AppError { 
    constructor(message?: string) { 
     super(message || "Client sent a bad request", 400); 
    } 
} 

export default BadRequestError; 

handler.ts

try { 
    throw new BadRequestError(); 
} catch (err) { 
    if (err instanceof AppError) { 
     responseCallback(err.statusCode, err.message, callback); 
    } else { 
     responseCallback(500, "Internal Server Error", callback); 
    } 
} 

期待される結果:

のステータスコードは:400

メッセージ:クライアントが不正な要求を送信し

実際の結果:

ステータスコード:500

メッセージ:内部サーバーエラー

答えて

0

解決済み!

この行をBadRequestErrorクラスに追加しました。

Object.setPrototypeOf(this, BadRequestError.prototype); 

BadRequestError

import AppError from "./AppError"; 

class BadRequestError extends AppError { 
    constructor(message?: string) { 
     super(message || "Client sent a bad request", 400); 

     Object.setPrototypeOf(this, BadRequestError.prototype); 
    } 
} 

export default BadRequestError; 

参考: https://stackoverflow.com/a/41429145/8504830

関連する問題