10LOC

#function-overloads

TypeScriptadvanced

Function overloads vs one generic signature — when each wins

export function parseValue(input: string): string;
export function parseValue(input: number): number;
export function parseValue(input: string | number): string | number {
  return typeof input === "string" ? input.trim() : Math.round(input);
}

Same function, two type-safe shapes: distinct return types per input type via overloads, versus one T-preserving signature via a generic.