No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Sobrecarga de funciones: el problema

10/22
Recursos

Aportes 5

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

La manera en como yo lo hago normalmente es con el operador as para indicarle a TS el tipo de dato que quiero en ciertos casos.

const resArr = parseStr("Marisol") as string[];

En el caso de arriba yo le estoy mandando un string, por lo que se que recibiré un array como respuesta.

Les comparto mis apuntes. 😄

Problema con el retorno de funciones

Cuando tenemos una función que retorna más de un solo tipo de dato y a ese resultado lo queremos utilizar en otra parte de nuestro programa, no vamos a poder usarlo como tal, ya que TypeScript no sabe que tipo de dato se retornó realmente.

TypeScript al no saber el tipo de dato que se retornó en una función que puede retornar más de un tipo de dato, somos nosotros los responsables en decirle el tipo de dato resultante de la función para así poder operar con el resultado de forma normal.

Uso de la sobrecarga de funciones

Se suele emplear mucho en librerías, pero depende mucho de tu proyecto y de las ventajas que te puede llegar a dar.

La sobre carga de funciones únicamente suelen darse con las funciones declarativas con la palabra reservada function.

const p =(i: any,...any: any)=>console.log(`\n\t(${i})=>`,...any);

/**
 * Virus => [V,i,r,u,s] => string => string[]
 * [V,i,r,u,s] => Virus => string[] => string
 */

function parseStr(
 input: string | string[]
): string | string[] {

	if(Array.isArray(input)){
		return input.join("")
	}else{
		return input.split("")
	}
}

const rta0 = parseStr(["V","i","r","u","s"])
	p(0, rta0)

const rta1 = parseStr("Virus")
	p(1, rta1)

function parseWord (input: string | string[]): string | string[] {
  return (Array.isArray(input)) ? input.join('') : [...input];
}

const first = parseWord('EDGAR') as string[];
const second = parseWord(first) as string;
const third = parseWord(second);

console.log(first);
console.log(second);
console.log(third);

otra forma de preguntar seria así

typeof res === "string" ? res.toLocaleLowerCase() : res.reverse();