为什么这个对象没有通过我自己的 PropTypes 验证

Why is this object failing my own PropTypes validation

我有一个 PropTypes 验证如下:

static propTypes = {
    tileHost: PropTypes.string,
    center: PropTypes.arrayOf(PropTypes.number),
    zoom: PropTypes.number,
    layers: PropTypes.objectOf(PropTypes.exact({
      visible: PropTypes.boolean,
      selected: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.node)),
      onClick: PropTypes.func,
      activeType: PropTypes.string
    })),
    focusBbox: PropTypes.arrayOf(PropTypes.number)
  }

我是这样称呼它的:

<Map
      height='350px'
      tileHost='mapbox'
      layers={{
        parcels: {
          visible: true,
          selected: {
            'APN': [apn]
          }
        },
      }}
      focusBbox={bbox}
    />

在我看来是正确的,但抛出了这个错误:

Warning: Failed prop type: Invalid prop `layers.parcels` key `visible` supplied to `Map`.
Bad object: {
  "visible": true,
  "selected": {
    "APN": [
      "11141327"
    ]
  }
}
Valid keys: [
  "visible",
  "selected",
  "onClick",
  "activeType"
]

这是道具类型 (15.7.2) 中的错误还是我做错了什么?

visible 属性 应该是 PropTypes.bool:

Map.propTypes = {
  layers: PropTypes.objectOf(
    PropTypes.exact({
      // Not PropTypes.boolean
      visible: PropTypes.bool
    })
  )
};