Оказывается, вавилон не хочет, чтобы мы были настолько точны в отношении именованных типов.
Таким образом, вместо описания каждого из названных аргументов, один безымянный аргумент, который их объединяет, выполняет ту же работу.
declare namespace ServerPlugin {
interface MyFunction {
(args: Params): void;
displayName?: string;
}
interface Params {
req: Express.Request;
res: Express.Response;
next: NextFunction;
extendDatabase: ExtendDatabase;
extendSchema: ExtendSchema;
}
}