What's the difference between PropTypes.objectOf
and PropTypes.shape
? In the PropTypes:
// 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
})
When should I use objectOf
and when should I use shape
?
PropTypes.objectOf
is used when describing an object whose properties are all the same type.
const objectOfProp = {
latitude: 37.331706,
longitude: -122.030783
}
// PropTypes.objectOf(PropTypes.number)
PropTypes.shape
is used when describing an object whose keys are known ahead of time, and may represent different types.
const shapeProp = {
name: 'Jane',
age: 25
}
// PropTypes.shape({ name: PropTypes.string, age: PropTypes.number })