better-prop-types
TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

better-prop-types

License CI Status Code Coverage NPM Version

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.

Readme

Keywords

none

Package Sidebar

Install

npm i better-prop-types

Weekly Downloads

24

Version

1.1.1

License

MIT

Unpacked Size

27.7 kB

Total Files

9

Last publish

Collaborators

  • ivangabriele