javascript - 在不相交联合类型中找不到属性

标签 javascript flowtype

以下代码:

/* @flow */

type StepApplicationAction = { type: "STEP_APPLICATION" }
type RewindApplicationAction = { type: "REWIND_APPLICATION" }

type ApplicationAction = StepApplicationAction | RewindApplicationAction

type RequestVinsAction = { type: "REQUEST_VINS" }
type ReceiveVinsAction = { type: "RECEIVE_VINS", vins: Array<string> }

type VehicleAction = RequestVinsAction | ReceiveVinsAction

type Action = ApplicationAction | VehicleAction

function reducer(action: Action) {
  switch (action.type) {
    case "REQUEST_VINS": console.log('HERE')
    case "RECEIVE_VINS":
      console.log(action.vins)
    default:
      return
  }
}

产生这些错误:

19:       console.log(action.vins)
                         ^ property `vins`. Property not found in
19:       console.log(action.vins)
                  ^ object type

不确定本例中我的不相交联合设置有什么问题。

最佳答案

您忘记了从 case 分支内返回中断:

/* @flow */

type StepApplicationAction = { type: "STEP_APPLICATION" }
type RewindApplicationAction = { type: "REWIND_APPLICATION" }

type ApplicationAction = StepApplicationAction | RewindApplicationAction

type RequestVinsAction = { type: "REQUEST_VINS" }
type ReceiveVinsAction = { type: "RECEIVE_VINS", vins: Array<string> }

type VehicleAction = RequestVinsAction | ReceiveVinsAction

type Action = ApplicationAction | VehicleAction

function reducer(action: Action) {
  switch (action.type) {
    case "REQUEST_VINS": console.log('HERE'); return;
//                                            ^^^^^^^
    case "RECEIVE_VINS":
      console.log(action.vins); return;
    default:
      return;
  }
}

Try Flow

关于javascript - 在不相交联合类型中找不到属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47097503/

相关文章:

javascript - Flow.js 从节点模块推断返回类型

javascript - 缺少 `T` 的类型注释

javascript - Photoshop 脚本中将多个 PNG 放在模型上的文件名问题

javascript - 为什么 Webpack 在我的主目录中寻找预设?

javascript - Webstorm + Flow + React : Unresolved variable or type $Keys

javascript - React——使用 TypeScript vs Flow vs?

javascript - 如何仅比较 JavaScript 中的对象的某些属性

javascript - 具有特定 ID 的表中动态添加 tr 的 jQuery 单击事件

javascript - 如何让 Animate CC 识别拖放操作中的拖放?

javascript - Firebase 在网页之间传递身份验证