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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

沒有重載匹配這個調(diào)用。“字符串”類型不可分配給“信號”類型

沒有重載匹配這個調(diào)用。“字符串”類型不可分配給“信號”類型

猛跑小豬 2021-09-30 09:49:11
我正在使用打字稿來構(gòu)建微服務(wù)并處理信號。直到幾天前,代碼都運行良好,但最近它開始拋出錯誤。找不到解決此問題的方法。處理信號的代碼。它只是文件的一部分。 src/main.ts  enum signals {    SIGHUP = 1,    SIGINT = 2,    SIGTERM = 15  }  const shutdown = (signal, value) => {    logger.warn("shutdown!")    Db.closeAll()    process.exit(value)  }  Object.values(signals).forEach(signal => {    process.on(signal, () => {      logger.warn(`process received a ${signal} signal`)      shutdown(signal, signals[signal])    })  })當我執(zhí)行ts-node src/main.ts以下錯誤并退出時。/home/meraj/.nvm/versions/node/v8.10.0/lib/node_modules/ts-node/src/index.ts:245    return new TSError(diagnosticText, diagnosticCodes)           ^TSError: ? Unable to compile TypeScript:src/main.ts:35:16 - error TS2769: No overload matches this call.  The last overload gave the following error.    Argument of type 'string | signals' is not assignable to parameter of type 'Signals'.      Type 'string' is not assignable to type 'Signals'.任何修復(fù)將不勝感激。或者,如果您能說出為什么它在 2 天前更早起作用而不是現(xiàn)在起作用。
查看完整描述

3 回答

?
慕田峪9158850

TA貢獻1794條經(jīng)驗 獲得超7個贊

當您將不正確數(shù)量的參數(shù)傳遞給匿名函數(shù)時,有時會發(fā)生這種情況:


    Object.keys(data).reduce((key: string) => {


    }, {}); 

會引發(fā)錯誤:


沒有重載匹配這個調(diào)用。重載 1 of 3


將正確數(shù)量的參數(shù)傳遞給它:


    Object.keys(data).reduce((acc: any, key: string) => {

    }, {});


查看完整回答
反對 回復(fù) 2021-09-30
?
皈依舞

TA貢獻1851條經(jīng)驗 獲得超3個贊

我也有這個奇怪的問題,但我使用類型斷言(在我的例子中使用字符串枚舉)解決了它:

(Object.values(someEnum) as string[]).concat(otherStringArray);


查看完整回答
反對 回復(fù) 2021-09-30
?
烙印99

TA貢獻1829條經(jīng)驗 獲得超13個贊

解決方案 1:保留數(shù)字枚舉 signals

Object.values(signals)

  // numeric enum includes reverse mapping, filter numbers out and keep "SIGHUP" etc.

  .filter((s): s is NodeJS.Signals => typeof s !== "number") 

  .forEach(signal => {

    process.on(signal, ...) // works now

  })

解決方案 2:使用純信號字符串文字類型

// these string literal items are strongly typed by built-in NodeJS.Signals type

Object.values<NodeJS.Signals>(["SIGHUP", "SIGINT", "SIGTERM"])

  .forEach(signal => {

    process.on(signal, ...) // works now

  })

方案三:改成字符串枚舉(無反向映射)

enum signals2 {

  SIGHUP = "SIGHUP",

  SIGINT = "SIGINT",

  SIGTERM = "SIGTERM"

}


Object.values(signals2)

  .forEach(signal => {

    process.on(signal, ...) // works now

  })

為什么會發(fā)生錯誤?

數(shù)字枚舉signals包括反向映射。例如,您可以執(zhí)行以下操作:


const r1 = signals.SIGHUP // r1 value: 1

const r2 = signals[signals.SIGINT] // r2 value: "SIGINT"

const r3 = signals[15] // r3 value: "SIGTERM"

這就是為什么你(string | signals)[]回來 for Object.values(signals), wherestring代表枚舉鍵和signals枚舉值。


現(xiàn)在,參數(shù)signalinprocess.on(signal, ...)必須是預(yù)定義的 Node.JS 字符串文字類型之一。但是我們傳入了string | signals項目類型,所以 TS 在這一點上大喊大叫。


查看完整回答
反對 回復(fù) 2021-09-30
  • 3 回答
  • 0 關(guān)注
  • 546 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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