better-prop-types
better-prop-types is a wrapper for the original prop-types library adding a few more
validators and modifiers to accurately handle null
and undefined
values (which shouldn't be considered similar!).
The code is fully test-covered and actively used in production. It also provides accurate Typescript declarations.
The library includes the original prop-types
as a dependency.
And that's important to note that better-prop-types is only bundled as a full JavaScript module (ESM).
Features
- Add
.isOptionalButNotNull
and .isRequiredButNullable
modifiers to all validators, besides the original
.isRequired
one:
.isOptionalButNotNull
keeps the prop as optional (accepting undefined
) but rejects null
values.isRequired
marks the prop as required but rejects both null
& undefined
values.isRequiredButNullable
marks the prop as required (rejecting undefined
) but accepts null
values
Usage
Installation
yarn add -E better-prop-types
or:
npm i -E better-prop-types
Example
import BetterPropTypes from 'better-prop-types'
export const MyComponent = ({
anOptionalButNonNullStringProp = 'A default string',
aRequiredAndNonNullableBooleanProp,
aRequiredButNullableNumberProp,
}) => (
)
MyComponent.propTypes = {
anOptionalButNonNullStringProp: BetterPropTypes.string.isOptionalButNotNull,
aRequiredAndNonNullableBooleanProp: BetterPropTypes.bool.isRequired,
aRequiredButNullableNumberProp: BetterPropTypes.number.isRequiredButNullable,
}
You can also use them with all the functional validators:
BetterPropsTypes.objectOf(/* */).isRequiredButNullable
BetterPropsTypes.shape(/* */).isOptionalButNotNull
- etc
Roadmap
- Integrate some prop-types-extra extra types:
all(...validators)
=> BetterPropsTypes.all(...validators)
deprecated(validator, reason)
=> BetterPropsTypes.isDeprecated(validator, reason)
isRequiredForA11y(validator)
=> BetterPropsTypes.string.isRequiredForA11y
- Improve original error messages for arrays validated via functional validators with explicit property naming.