2012-10-04 41 views
1

让我们假设我定义的模块,并且我有一些函数的定义是这样的:我如何重构类型注释?

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; 

我反复使用这个返回类型注释:

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

有没有一种方法来定义该类型,分配一个名称,只引用名称,而不是重复相同的事情?

回答

6

是的!您可以使用接口与调用签名:

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

现在你可以使用它像:

export function bodyParser(options?: any): MyCallSignature