[英]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
。
還要注意的是,你可以使用也許語法聯盟,而不是與void
如let stageMsg: ?StageMsg
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.