PropTypes em React

Em alguns exemplos, eu já vi algo assim:

Footer.propTypes = {
  completedCount: PropTypes.number.isRequired,
  activeCount: PropTypes.number.isRequired,
  filter: PropTypes.string.isRequired,
  onClearCompleted: PropTypes.func.isRequired,
  onShow: PropTypes.func.isRequired
}

Quem são essesPropTypes realmente fazendo? Eles são legais ou obrigatórios?

questionAnswers(2)

yourAnswerToTheQuestion