Как расширить объявление TS express.Application.get для принятия возвращаемого типа? - PullRequest
0 голосов
/ 08 февраля 2019

Я передаю какой-то объект в качестве помощника для моего экспресс-приложения.Я присоединяю их к экземпляру приложения:

app.set('logger', logger); // logger has Logger type

Имея это, я получаю доступ к определенному помощнику при обработке какого-либо запроса:

const logger = req.app.get('logger') as Logger;
// or
const logger: Logger = req.app.get('logger');

Я хочу добиться наличия общего Application.get метод, предоставляемый req.app объектом.Код, который я хотел бы начать использовать, выглядит следующим образом:

const logger = req.app.get<Logger>('logger');

Я создал @types/express.d.ts файл в корневой директории проекта, ниже его содержимого:

import * as express from 'express';

declare module 'express' {
  export interface Application {
    get<T>(name: string): T;
  }
}

My tsconfig.jsonохватывает каталог, в который я поместил расширение для набора:

"typeRoots": ["node_modules/@types", "@types"],

Несмотря на то, что я объявил расширение для набора текста, TS все еще видит только @types/express определение:

(property) Application.get: (name: string) => any (+3 overloads)

Я ожидаю, что онотакже охватите определение, которое я создал.

...