React propTypes: objectOf vs shape?

Qual é a diferença entrePropTypes.objectOf ePropTypes.shape? Nodocs:

// An object with property values of a certain type
optionalObjectOf: PropTypes.objectOf(PropTypes.number)

vs

// An object taking on a particular shape
optionalObjectWithShape: PropTypes.shape({
  color: PropTypes.string,
  fontSize: PropTypes.number
})

Quando devo usarobjectOf e quando devo usarshape?