Package Exports
- add-prop-types
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (add-prop-types) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
add-prop-types
Making prop-types easy to work with.
// Tired
Component.propTypes = {
installPackage: PropTypes.func,
name: PropTypes.string,
version: PropTypes.number.isRequired
};
Component.defaultProps = {
name: 1
};
// Wired
addPropTypes(Component, {
installPackage: 'func',
name: 'string',
version: {
type: 'number',
default: 1,
isRequired: true
},
});
General Usage
A String shorthand argument is supported by most types. See below in complete usage for supported and unsupported types.
addPropTypes(Component, {
firstName: 'string',
lastName: 'string',
});
The object argument is supported by all types and allows for the setting of default and required props. Some types require the object argument, refer to complete usage for the list.
addPropTypes(Component, {
firstName: {
type: 'string',
default: 'first name',
isRequired: true
},
lastName: {
type: 'string',
default: 'last name'
},
nicknames: {
type: 'arrayOf',
typeValue: 'string'
}
});
Complete Usage
addPropTypes(Component, {
// PropTypes.array
optionalArray: 'array',
// PropTypes.bool
optionalBool: 'bool',
// PropTypes.func
optionalFunc: 'func',
// PropTypes.number
optionalNumber: 'number',
// PropTypes.object
optionalObject: 'object',
// PropTypes.string
optionalString: 'string',
// PropTypes.symbol
optionalSymbol: 'symbol',
// PropTypes.node
optionalNode: 'node',
// PropTypes.element
optionalElement: 'element',
// PropTypes.elementType
optionalElementType: 'elementType',
// ---- Types requiring the object argument
// TODO: PropTypes.instanceOf
// TODO: PropTypes.oneOf
// TODO: PropTypes.oneOfType
// TODO: PropTypes.arrayOf
// TODO: PropTypes.objectOf
// TODO: PropTypes.shape
// TODO: PropTypes.exact
// Custom prop
customProp: function(props, propName, componentName) {
if (!/matchme/.test(props[propName])) {
return new Error(
'Invalid prop `' +
propName +
'` supplied to' +
' `' +
componentName +
'`. Validation failed.'
);
}
},
// TODO: Custom PropTypes.arrayOf
});