React's PropTypes, packaged up as a standalone module.
DISCLAIMER: This is literally copied from the React 0.14 codebase. If you're using PropTypes with React, it would be silly to reference this standalone version.
function check(props, propTypes) {
for (let prop in propTypes) {
if (propTypes.hasOwnProperty(prop)) {
let err = propTypes[prop](props, prop, 'name', 'prop');
if (err) {
console.warn(err);
return false;
}
}
}
return true;
}
let valid = check({
a: 42,
b: 'News'
}, {
a: PropTypes.number,
b: PropTypes.oneOf(['News', 'Photos'])
});
valid; // true
With webpack:
module.exports = {
resolve: {
alias: {
proptypes: 'proptypes/disabled',
}
}
};
When you are using this package with React like API, you might want to save bandwidth by removing the definitions. You can use babel-plugin-transform-react-remove-prop-types for that use case, for instance:
// In
const Baz = (props) => (
<div {...props} />
);
Baz.propTypes = {
className: PropTypes.string
};
// Out
const Baz = (props) => (
<div {...props} />
);
BSD