流类型属性“ msg”缺少null或未定义

Jos*_*ggs 0 javascript flowtype react-native

我发现很难使用Flow。我知道Array.find可以返回或不确定。

因此,通过阅读以下内容:github:Array <{...}>上的Array.find引发

我做到了,并添加void到类型。但是现在我得到了错误:

无法获取,stageMsg.msg因为msg缺少属性为null或未定义(请参见第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].
);
Run Code Online (Sandbox Code Playgroud)

谢谢先进的人:D

rob*_*obC 6

您只需要stageMsg在访问属性之前检查其是否存在。
因此,您可以将您的任务包装到msgif (stageMsg) { ... },或使用像这样的内联表达式stageMsg && stageMsg.msg
还要注意的是,你可以使用也许语法,而不是与工会voidlet stageMsg: ?StageMsg