簡體   English   中英

Flowtype 屬性 'msg' 在 null 或 undefined 中缺失

[英]Flowtype property 'msg' is missing in null or undefined

我發現很難使用 Flow。 我知道Array.find可以返回或未定義。

所以通過閱讀這個: github: Array.find on Array<{...}> raises

我這樣做了,並在 to 類型中添加了void 但是現在我收到錯誤:

無法獲取stageMsg.msg因為 null 或 undefined 中缺少屬性msg (請參見第 92 行)。

檢查代碼以查看錯誤具體在哪里。

我明白為什么它給我這個錯誤,未定義中沒有msg 我不知道如何解決這個問題。

這是代碼:

type StageMsg = {
  stage: number,
  msg?: string
};

let stageMsg: void | StageMsg = this.stages.find(
  (obj: StageMsg) => obj.stage === this.state.stage
);

msg = (
  <Msg text={this.state.msg !== "" ? this.state.msg : stageMsg.msg} /> //<---- [Error here].
);

您只需要在訪問stageMsg的屬性之前檢查它stageMsg存在。
因此,您可以將分配給msg包裝在if (stageMsg) { ... } ,或者使用內聯表達式,如stageMsg && stageMsg.msg
還要注意的是,你可以使用也許語法聯盟,而不是與voidlet stageMsg: ?StageMsg

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM