es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Fundamentos de TypeScript: genéricos y funciones de flecha

Estaba revisando el manual de TypeScript e intentaba convertir lo siguiente:

function map<input, output="">(
  arr: Input[],
  func: (arg: Input) => Output
): Output[] {
  return arr.map(func);
}

a una función de flecha. Entonces hice esto, que creo que está correcto:

const map2 = <input, output="">(
  arr: Input[],
  func: (arg: Input) => Output
): Output[] => {
  return arr.map(func);
};

Pero me preguntaba cómo lo implementaría si quisiera usar un alias de tipo para la función, como esto:

type Fn = <x, y="">(x: X) => Y;
const map2 = <input, output="">(
  arr: Input[],
  func: Fn 
): ??? => {
  return arr.map(func);
};

Este ejemplo anterior genera un error debido a Output[]. Entonces, ¿cómo definiría el tipo de salida de map2 ya que Output[] ya no funcionará? ¡Cualquier ayuda sería muy apreciada!</input,></x,></input,></input,>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para definir el tipo de salida de map2 al usar un alias de tipo para la función, puedes utilizar el tipo de utilidad ReturnType proporcionado por TypeScript. Este tipo de utilidad te permite extraer el tipo de retorno de un tipo de función.

    Aquí tienes cómo puedes modificar tu código para utilizar ReturnType:

    type Fn<x, y=""> = (x: X) => Y;
    
    const map2 = <input, output="">(
      arr: Input[],
      func: Fn<input, output="">
    ): ReturnType<><input, output="">>[] => {
      return arr.map(func);
    };
    

    En este código, el tipo de utilidad ReturnType se utiliza para extraer el tipo de retorno del alias de tipo Fn para el parámetro func. El tipo ReturnType se aplica a toda la función de flecha, especificando que la función devuelve un array del mismo tipo que el tipo de retorno de func.

    Esto debería solucionar el error que estabas enfrentando y permitirte definir el tipo de salida de map2 al usar un alias de tipo para la función.</input,></input,></input,></x,>

Comments are closed.