¿Cómo puedo refactorizar anotaciones de tipo?

votos
1

Supongamos que estoy definiendo un módulo, y tengo algunas definiciones de función como esta:

export function bodyParser(options?:any): 
  (req: ExpressServerRequest, res: ExpressServerResponse, next) =>void;
export function errorHandler(opts?:any): 
  (req: ExpressServerRequest, res: ExpressServerResponse, next) =>void;
export function methodOverride(): 
  (req: ExpressServerRequest, res: ExpressServerResponse, next) =>void;
export function favicon(url: string, opts? ): 
  (req: ExpressServerRequest, res: ExpressServerResponse, next) =>void;
export function logger(type: string, opts? ): 
  (req: ExpressServerRequest, res: ExpressServerResponse, next) =>void;

Estoy en repetidas ocasiones el uso de este tipo de retorno anotación:

(req: ExpressServerRequest, res: ExpressServerResponse, next) =>void

¿Hay una manera de definir este tipo, asignarle un nombre, y acaba de hacer referencia al nombre en lugar de repetir la misma cosa?

Publicado el 04/10/2012 a las 23:51
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
6

¡Sí! Se puede utilizar una interfaz con una firma llamada:

interface MyCallSignature {
    (req: ExpressServerRequest, res: ExpressServerResponse, next): void;
}

Ahora se puede usar como:

export function bodyParser(options?: any): MyCallSignature
Respondida el 04/10/2012 a las 23:56
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more