Skip to content

Latest commit

 

History

History
58 lines (42 loc) · 1.7 KB

06.FunctionOverloads.md

File metadata and controls

58 lines (42 loc) · 1.7 KB

Function Overloads (Sobrecarga de funciones)

← Volver a la tabla de contenido

Permite definir firmas en multiples funciones para guardar en la misma función, en otras palabras se pueden tener multiples formas de llamar una función con diferentes parámetros

type StringNumber = string | number;

function add(a: StringNumber, b: StringNumber){
  if(typeof a === 'string' || typeof b === 'string'){
    return a.toString() + b.toString()
  }
  return a + b;
}

const result = add('cesar', '  gomez');
result.split(' ')

en este ejemplo no podríamos usar el método split() porque es propio de los strings, y para TypeScript el return de la function es de tipo StringNumber

se podría solucionar con un casting para informar que el tipo de return es string y ya se podría usar el método split()

const result = add('cesar', '  gomez') as string;
result.split(' ')

sin embargo es mejor con Function Overloads consiste en anidar la function con el tipo de return

type StringNumber = string | number;

type NumberBoolean = number | boolean;

type Combinable = StringNumber & NumberBoolean;

function add(a: string, b: string): string;
function add(a: string, b: number): string;
function add(a: number, b: string): string;
function add(a: number, b: number): number;
function add(a: StringNumber, b: StringNumber){
  if(typeof a === 'string' || typeof b === 'string'){
    return a.toString() + b.toString()
  }
  return a + b;
}

const result = add('max', ' schwarz');
result.split(' ')

← Volver a la tabla de contenido