馃敟 FUNCIONES, OVERLOAD (SOBRECARGA)

Algunas funciones de JavaScript pueden ser invocadas con diferentes tipos y n煤mero de argumentos. Por ejemplo, es posible escribir una funci贸n que produce un Date que toma un timestamp (un argumento) o un mes/d铆a/a帽o (tres argumentos).

En TypeScript, podemos especificar una funci贸n que puede ser llamada de formas diferentes utilizando overload signatures o sobrecarga de funciones. Para poder hacer esto escribe un n煤mero de posibles definiciones distintos de una funci贸n (usualmente dos o mas), seguido del cuerpo de la funci贸n.

Al igual que con los generics, existen algunas guias para el buen uso de la escritura de las funciones con sobrecarga. Al seguir estos principios nos aseguramos que sean sencillas de invocar, sencillas de entender y sencillas de implementar.

function longitud(a: any[]): number;
function longitud(x: string): number;
function longitud(x: any): number {
    return x.length;
}

console.log(longitud("hola mundo"));
console.log(longitud([1, 2, 3, 4, 5]));

En este ejemplo tenemos una funci贸n con sobrecarga que imprime la longitud de un texto o un string. Si bien cumple con su funci贸n, podemos simplificar esta funci贸n con sobrecarga de una forma mucho mas sencilla usando unions.

function calcularLongitud(x: any[] | string) {
    return x.length;
}

console.log(calcularLongitud("hola mundo"));
console.log(calcularLongitud([1, 2, 3, 4, 5]));