TS函数重载

37 阅读1分钟

未使用函数重载前,多返回类型

function getData(ID?: string | string[]): DataType | DataType[] | undefined {
  if (Array.isArray(ID)) {
    return [
      {
        name: "111",
        age: 22,
      },
    ];
  }
  if (!ID) return;
  return {
    name: "111",
    age: 22,
  };
}

image.png c类型为多类型,下面直接使用还需要使用 as , 不太友好 image.png

function getData(ID: string): DataType;
function getData(ID: string[]): DataType[];
function getData(ID?: string): undefined;
function getData(ID) {
  if (Array.isArray(ID)) {
    return [
      {
        name: "111",
        age: 22,
      },
    ];
  }
  if (!ID) return;
  return {
    name: "111",
    age: 22,
  };
}

实现函数重载后,调用该方法则会有对应提示,上下进行切换
image.png
image.png
当传递参数为 字符串 时,返回结果 image.png
当传递参数为 数组 时,返回结果 image.png
未传递 参数时,返回结果 image.png
当遇见参数多类型且返回结果多类型的函数时,则应该使用函数重载,方便后续操作,就不需要加判断或者 as