TypeScript的函数部分

106 阅读1分钟

函数重载

TypeScript 允许你声明函数重载。这对于文档 + 类型安全来说很实用。请思考以下代码:

// 重载 
function padding(all: number);
function padding(topAndBottom: number, leftAndRight: number);
function padding(top: number, right: number, bottom: number, left: number);
// Actual implementation that is a true representation of all the cases the function body needs to handle
function padding(a: number, b?: number, c?: number, d?: number) {
  if (b === undefined && c === undefined && d === undefined) {
    b = c = d = a;
  } else if (c === undefined && d === undefined) {
    c = a;
    d = b;
  }
  return {
    top: a,
    right: b,
    bottom: c,
    left: d
  };
}

可以试试以下的调用

padding(1); // Okay: all
padding(1, 1); // Okay: topAndBottom, leftAndRight
padding(1, 1, 1, 1); // Okay: top, right, bottom, left

padding(1, 1, 1); // Error: Not a part of the available overloads

重载是加限制条件,用来限制调用函数的方式。函数重载在运行时没有任何开销,只是帮助你实现文档和类型的安全。