亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

流程錯誤:無法調用 `Object.entries(...).reduce` 因為`...` [1]

流程錯誤:無法調用 `Object.entries(...).reduce` 因為`...` [1]

UYOU 2022-06-16 15:45:13
我對 Flow 很陌生,我可能在這里遺漏了一些非?;镜臇|西。我有一個特定格式的對象,我正在將其轉換為另一種格式。這可以通過多種方式完成,但我選擇使用 Object.entries 來獲取包含鍵/值對的數組,然后使用 reducer 函數處理條目數組,如下所示: const langContent = { // The input object  someKey: {    en: 'Some en value',    nb: 'Some nb value'  },  someOtherKey: {    en: 'some other en Value',    nb: 'some other nb Value'  }}const useLanguages = ['nb', 'en']const result = Object.entries( langContent ).reduce( ( obj, [key, val] ) => {  useLanguages.forEach( ( langKey ) => {    if ( ! obj[langKey] ) obj[langKey] = { translation:{} }    obj[langKey].translation[key] = val[langKey]  } )  return obj}, {} )// Expected output object in the form of { en: translation: {someKey: 'some en value'}}純 js 按預期工作:jsfiddle但是,當嘗試使用 Flow 進行類型檢查時(我花了一些時間試圖弄清楚如何做到這一點),我不斷在標題中收到錯誤。以下是我的一些嘗試:FlowTry1FlowTry2FlowTry3(對我來說,編寫流類型比編寫實際的 js 花費更多時間;)。錯誤出現在 reducer 函數中,并且與 Flow 期望 Object.entries 鍵/值對中的第二個數組項“混合”(我認為)有關。但我想做的是告訴 Flow,對于這個函數,我們可以期望一個對象作為鍵/值數組中的值,如下所示:Type ExpectedCurrentItem = [string, { [string] : string} ] } 甚至更好: Type ExpectedCurrentItem = [string, { ['en' | 'nb'] : string} ] }(是的,我知道我可以用另一種方式解決這個問題,例如使用 Object.keys() 代替,并且我已經設法獲得了一個沒有 Flow 錯誤的替代解決方案,但顯然我對 Flow 有一些不明白的地方邏輯,它嘮叨我)。非常感謝任何見解!
查看完整描述

1 回答

?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

由于缺乏對這個問題的回應,我重寫了我的代碼以消除流程錯誤:


type LangKeys = 'en' | 'nb'

type LangKeyValObj =  {[string]: string | void}

type LangObj = {[LangKeys] : {translation: LangKeyValObj} }


const useLanguages : $ReadOnlyArray<LangKeys> = [

  'nb',

  'en'

]


const resources : LangObj = useLanguages.reduce( ( obj: LangObj, langKey : LangKeys ) => {

  const trans = Object.keys( langContent ).reduce( ( o: LangKeyValObj, key: string ) => {

    o[key] = langContent[key][langKey]

    return o

  },{} )

  obj[langKey] = { translation: trans }

  return obj

},{} )


查看完整回答
反對 回復 2022-06-16
  • 1 回答
  • 0 關注
  • 263 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號