Typescript 中的函数重载

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 }));
Code language: TypeScript (typescript)

TypeScript 可以自动检测到这个函数有3种重载参数,你可以任选一种。

Leave a Reply