函数重载
ts 的函数重载实现分为两步。
- 编写多个重载签名(只有类型声明,没有函数体)
- 编写一个实现签名(函数的实际逻辑,参数和返回值必须兼容上面所有的重载函数)
函数重载的作用是,可以让编译器根据传入的参数来推断出函数的返回值。
下面是一些代码案例
002_joinTimestamp.ts
function joinTimestamp<T extends boolean>(
join: boolean,
restful: T,
): T extends true ? string : object;
function joinTimestamp(join: boolean, restful = false): string | object {
if (!join) {
return restful ? "" : {};
}
const now = new Date().getTime();
if (restful) {
return `?_t=${now}`;
}
return { _t: now };
}
console.log(joinTimestamp(true, true));
002_makedate.ts
function makeDate(timestamp: number): Date;
function makeDate(y: number, m: number, d: number): Date;
function makeDate(yOrTimestamp: number, m?: number, d?: number): Date {
if (m !== undefined && d !== undefined) {
return new Date(yOrTimestamp, m, d);
} else {
return new Date(yOrTimestamp);
}
}
console.log(makeDate(1772076358097));
console.log(makeDate(2026, 1, 26));