Function Overloading 可以让同一个函数接受不同个数和类型的参数。如:
interface Coordinate {
x: number;
y: number;
}
function parseCoordinate(obj: Coordinate): Coordinate;
function parseCoordinate(x: number, y: number): Coordinate;
function parseCoordinate(arg1: unknown, arg2?: unknown): Coordinate {
let coord: Coordinate = {
x: 0,
y: 0,
};
if (typeof arg1 === "object") {
coord = {
...(arg1 as Coordinate),
};
} else {
coord = {
x: arg1 as number,
y: arg2 as number,
};
}
return coord;
}
console.log(parseCoordinate(10, 20));
console.log(parseCoordinate({ x: 52, y: 35 }));
TypeScript 可以自动检测到这个函数有3种重载参数,你可以任选一种。