TypeScript限制取值范围后,可能是函数类型警告?

image.png

export function parseTime(
  time: object | string | number,
  cFormat: string
): string | null {
  if (arguments.length === 0) {
    return null;
  }
  const format = cFormat || "{y}-{m}-{d} {h}:{i}:{s}";
  let date: Date;
  if (typeof time === "object") {
    date = time as Date;
  } else {
    if (typeof time === "string" && /^[0-9]+$/.test(time)) {
      time = parseInt(time);
    }
    if (typeof time === "number" && time.toString().length === 10) {
      time = time * 1000;
    }
    date = new Date(time);
  }
  interface formatObjType {
    y: number;
    m: number;
    d: number;
    h: number;
    i: number;
    s: number;
    a: number;
  }
  type keyRange = "y" | "m" | "d" | "h" | "i" | "s" | "a";
  const formatObj: Record<keyRange, number> = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay(),
  };

  const time_str = format.replace(
    /{(y|m|d|h|i|s|a)+}/g,
    (result, key: keyRange) => {
      let value: number | string = formatObj[key];
      // Note: getDay() returns 0 on Sunday
      if (key === "a") {
        return ["日", "一", "二", "三", "四", "五", "六"][value];
      }
      if (result.length > 0 && value < 10) {
        value = "0" + value;
      }
      return value || 0;
    }
  );
  return time_str;
}
阅读 2.1k
1 个回答

你最后的 return 改成

return value || '0'

函数声明的返回类型是string ,你却返回了数字,当然不对。

String.replace 方法的第二参数函数必须返回一个字符串

replacer: (substring: string, ...args: any[]) => string
const time_str = format.replace(
    /{(y|m|d|h|i|s|a)+}/g,
    (result, key: keyRange) => {
      let value = formatObj[key];
      // Note: getDay() returns 0 on Sunday
      if (key === "a") {
        return ["日", "一", "二", "三", "四", "五", "六"][value];
      }
      if (result.length > 0 && value < 10) {
        value = value;
      }
      return String(value || 0);
    }

在线地址

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题