JSPM

add-prop-types

0.0.4
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 9
    • Score
      100M100P100Q53429F
    • License MIT

    A util for working with prop-types.

    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

    npm version

    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
    });