Table of Contents
URL: https://www.progressiverobot.com/react-react-proptypes/
As compilation (er…transpilation) becomes the defacto standard of the post ES5, JSX-leaning JS dev landscape—care of tools like Babel—there is a growing sentiment that it may be time to let go of our fair language's dynamic and coercive ways in favor of a more sensible, statically-typed way of doing things.
Which leads to questions like, "Sure, but where do I even start?"
The biggest camps are TypeScript (Microsoft) and Flow (Facebook), but if you're working in React you've already got a wonderful, low-maintenance alternative in your codebase that's as easy to implement as it is to learn.
import React, { PropTypes } from 'react';
Say hello to React.PropTypes, a developer-friendly tool for declaring and checking types. Sure, it handles all the primitives ( array, bool, func, number, object, string, symbol) easily enough:
function Nest({name}) {
return (
<div>
We called it {name}.
</div>
);
}
Nest.propTypes = {
name: PropTypes.string,
}
export default Nest;
But there's also enough depth under the hood to manage some pretty sophisticated verifications:
Nest.propTypes = {
name: PropTypes.string,
eggs: PropTypes.shape({
species: PropTypes.string,
femaleToMale: PropTypes.arrayOf(PropTypes.number),
hobbies: PropTypes.oneOf(['swimming', 'stalking']),
}),
}
All-in you get nine additional types to throw your props against:
nodeandelementfor all your DOM and React element needs
instanceOffor digging into prototypes
oneOffor lists of known potential values
oneOfTypefor lists of known potential types
arrayOfandobjectOffor arrays and objects composed of a single type
shapefor objects in the shape of a specific schema
- and
anyfor when you really don't want to check for a type
Furthermore, you can attach isRequired to any PropType declaration for added rigidity.
hobbies: PropTypes.oneOf(['swimming', 'stalking']).isRequired
Couple things to note, PropType checking is <^>disabled in production<^>, and it's only present as a guiding hand in development mode. It throws warnings, not errors.
👉 That's it. You're a type checking expert now. Don't abuse this new power in opinion convos.