code: function createOneOfTypeChecker(expectedEnumOfTypeValues) {
  
      return createChainableChecker(function (data, dataName, componentName, fullDataName) {
  
          if (getDataType(expectedEnumOfTypeValues) !== 'array') {
              throw new Error('[SAN ERROR] '
                  + 'Data `' + dataName + '` of `' + componentName + '` has invalid '
                  + 'DataType notation inside `oneOf`, array is expected.'
              );
          }
  
          var dataValue = data[dataName];
  
          for (var i = 0, len = expectedEnumOfTypeValues.length; i < len; i++) {
  
              var checker = expectedEnumOfTypeValues[i];
  
              if (typeof checker !== 'function') {
                  continue;
              }
  
              try {
                  checker(data, dataName, componentName, fullDataName);
                  // 如果 checker 完成校验没报错，那就返回了
                  return;
              }
              catch (e) {
                  // 如果有错误，那么应该把错误吞掉
              }
  
          }
  
          // 所有的可接受 type 都失败了，才丢一个异常
          throw new Error('[SAN ERROR] '
              + 'Invalid ' + componentName + ' data `' + dataName + '` of value'
              + '(`' + dataValue + '` supplied to ' + componentName + ')'
          );
  
      });
  
  }
docs: 生成 oneOfType 校验器
  
  @param  {Array<Function>} expectedEnumOfTypeValues 期待的枚举类型
  @return {Function}