All files / type-json-mapper/src transform.ts

56.67% Statements 17/30
50% Branches 7/14
100% Functions 1/1
56.67% Lines 17/30

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54  1x             1x 13x 2x   11x 11x 11x   2x 2x   2x 2x       2x                                   1x 1x   6x 6x           11x  
import { TYPE_NAME } from "../libs/types";
import { formatDate, isNotBasicType } from "./utils";
 
/**
 * @param {any} oriData - 目标数据
 * @param {TYPE_NAME} typeName - 转换类型
 * @return {any}
*/
export function transType<T>(oriData: any, typeName?: TYPE_NAME): any {
  if (isNotBasicType(oriData)) {
    return oriData;
  }
  let value: any = null;
  try {
    switch (typeName) {
      case 'string':
        value = `${oriData}`;
        break;
      case 'int':
        value = parseInt(oriData, 10);
        Iif (value !== value) {
          // NaN
          throw new Error('int类型转换失败');
        }
        break;
      case 'flot':
        value = parseFloat(oriData);
        if (value !== value) {
          // NaN
          throw new Error('flot类型转换失败');
        }
        break;
      case 'boolean':
        value = Boolean(oriData);
        break;
      case 'date':
        value = formatDate(oriData, 'Y-M-D');
        break;
      case 'time':
        value = formatDate(oriData, 'h:m:s');
        break;
      case 'datetime':
        value = formatDate(oriData);
        break;
      default:
        value = oriData;
        break;
    }
  } catch (error) {
    value = oriData;
    console.error(`${oriData}类型转换失败:${error}`);
  }
  return value as T;
}