code: function createChainableTypeChecker(validate) {
      function checkType(
          isRequired,
          props,
          propName,
          componentName,
          location,
          propFullName,
          ...rest
      ) {
          return untracked(() => {
              componentName = componentName || "<<anonymous>>"
              propFullName = propFullName || propName
              if (props[propName] == null) {
                  if (isRequired) {
                      const actual = props[propName] === null ? "null" : "undefined"
                      return new Error(
                          "The " +
                              location +
                              " `" +
                              propFullName +
                              "` is marked as required " +
                              "in `" +
                              componentName +
                              "`, but its value is `" +
                              actual +
                              "`."
                      )
                  }
                  return null
              } else {
                  return validate(props, propName, componentName, location, propFullName, ...rest)
              }
          })
      }
  
      const chainedCheckType = checkType.bind(null, false)
      chainedCheckType.isRequired = checkType.bind(null, true)
      return chainedCheckType
  }
docs: Copied from React.PropTypes