Búsqueda de sitios web

typescript - ¿Cómo agregar tipo/interfaz a la declaración de function()?


Tengo tipos como estos definidos en un archivo separado:

type AddFunc = (a: number, b:number) => number

y los estoy usando para escribir funciones de 'flecha gorda':

const add: AddFunc = (a, b) => a + b

Esto está bien, sin embargo me encontré con un problema al cambiar lo anterior a una declaración de función, es decir

function add(a, b) {
  return a + b
}

No estoy seguro, pero ¿hay una manera de reutilizar el tipo AddFunc para lo anterior? El único enfoque que se me ocurrió es hacerlo manualmente como se muestra a continuación, pero me pregunto si puedo reutilizar tipos existentes en su lugar

function add(a: number, b: number): number {
   return a + b
}

Respuesta #1

...Me pregunto si puedo reutilizar tipos existentes en su lugar

Tristemente, no realmente. Quiero decir, tú podrías hacer algo como esto (enlace al playground):

function add(...args: Parameters<AddFunc>): ReturnType<AddFunc> {
    const [a, b] = args;
    return a + b;
}

...pero aunque eso significa que solo tienes que actualizar un lugar (AddFunc) si haces esto con múltiples funciones del mismo tipo, difícilmente es conciso. :-)

Sin embargo, sí ofrece un buen autocompletado de IDE, etc., gracias al tipo de tupla Parameters:

Artículos relacionados