Я передаю какой-то объект в качестве помощника для моего экспресс-приложения.Я присоединяю их к экземпляру приложения:
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)
Я ожидаю, что онотакже охватите определение, которое я создал.