Published on

TS函数

Authors
  • avatar
    Name
    李丹秋
    Twitter

函数类型注释

type GreetFunction = (a: string) => void;

泛型函数

通常编写一个函数,其中输入的类型与输出的类型相关,或者两个输入的类型以某种方式相关。

function firstElement<Type>(arr: Type[]): Type | undefined {
  return arr[0];
}

通过一个Type,我们就轻松的将参数和返回值关联起来

泛型限制

如果我们想要给泛型添加一些限制的话,可以使用以下方法

function longest<Type extends { length: number }>(a: Type, b: Type) {
  if (a.length >= b.length) {
    return a;
  } else {
    return b;
  }
}

函数重载

TS中可以通过函数重载的方式,对一个函数进行不同的实现。

function makeDate(timestamp: number): Date;
function makeDate(m: number, d: number, y: number): Date;
function makeDate(mOrTimestamp: number, d?: number, y?: number): Date {
  if (d !== undefined && y !== undefined) {
    return new Date(y, mOrTimestamp, d);
  } else {
    return new Date(mOrTimestamp);
  }
}
const d1 = makeDate(12345678);
const d2 = makeDate(5, 5, 5);
const d3 = makeDate(1, 3);

函数重载可以写多个,但是最终函数的实现,一定要考虑所有重载函数的可能性