第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

TypeScript 類繼承的行為與其 ES6 等效項(xiàng)不同

TypeScript 類繼承的行為與其 ES6 等效項(xiàng)不同

繁花如伊 2023-08-05 19:38:23
我正在使用express和TypeScript項(xiàng)目為node.js構(gòu)建一個(gè)錯(cuò)誤處理中間件。在其中我有一個(gè)AppError擴(kuò)展的類Error。它看起來(lái)像這樣:class AppError extends Error {? public readonly internalCode: number | undefined;? public readonly httpCode: number;? public readonly message: string;? constructor(httpCode: number, message: string, internalCode?: number) {? ? super();? ? this.internalCode = internalCode;? ? this.message = message;? ? this.httpCode = httpCode;? }? public generateReport(): GenericReport {? ? return {? ? ? code: this.internalCode,? ? ? message: this.message,? ? };? }}我目前正在使用以下中間件將其放入new AppError()一條路線中:/errorerrorHandlerfunction errorHandler(err: Error, request: Request, response: Response, next: NextFunction,): Response {? if (err instanceof AppError) {? ? const report = err.generateReport();? ? return response.status(err.httpCode).json(report);? }? return response.status(500).json(err);}在中間件內(nèi)部,我試圖AppError在err[[Prototype]] 鏈上查找,但在 TypeScript 代碼中驗(yàn)證總是失敗。然而,用 Babel 轉(zhuǎn)譯它并用 運(yùn)行 JS 版本后node,err instanceof AppError解析為true. 為什么TS代碼里沒(méi)有呢?在上面的示例中,Object.getPrototypeOf(err)返回 me Error {},并將err類型更改為AppErrororany不會(huì)影響結(jié)果。據(jù)我了解,新構(gòu)造的對(duì)象(new AppError()運(yùn)行后)應(yīng)該 [[Prototype]] 鏈接到AppError. curl http://localhost:3333/error在 TS 服務(wù)器上運(yùn)行時(shí),我得到{ "internalCode": 1, "message": "This is an error", "httpCode": 500 },這意味著它err確實(shí)是由AppError().
查看完整描述

1 回答

?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊

我看了你的代碼。一些評(píng)論:

  1. 切換到更高版本的 ecmascript 輸出可能會(huì)解決此問(wèn)題,因?yàn)槟妮敵霈F(xiàn)在不會(huì)生成類,因?yàn)?EcmaScript 5 還沒(méi)有它們。

  2. 最好不要使用ts-node 工具,特別是當(dāng)您嘗試調(diào)試類似的東西時(shí)。它可以給出時(shí)髦的結(jié)果,并且能夠查看正在執(zhí)行的真實(shí) JavaScript 真是太好了。

  3. 我查看了您的存儲(chǔ)庫(kù),我相信您應(yīng)該只用于instanceof您想要做的事情。我認(rèn)為出于錯(cuò)誤中間件的目的,instanceof 更有意義。

查看完整回答
反對(duì) 回復(fù) 2023-08-05
  • 1 回答
  • 0 關(guān)注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)