Как мне расширить наборы Express.Application, чтобы дать наборы для app.locals - PullRequest
0 голосов
/ 02 октября 2019

В нашем приложении мы добавляем довольно много объектов конфигурации в app.locals, которые используются в нашем промежуточном программном обеспечении.

const app = Express();
app.locals = {
  someConfig: config
}

В настоящее время у нас есть пользовательские наборы для объекта Request, которые работают без сбоев

declare namespace Express {
  export interface Request {
    featureFlags?: FeatureFlag;
  }
}

Я знаю, locals происходит из Express.Application, поэтому я попробовал это, и он не 'т работа.

declare namespace Express {
  export interface Application {
    locals: {
      someConfig: config;
    };
  }

  export interface Request {
    featureFlags?: FeatureFlag;
  }
}

Кто-нибудь успешно добавил типы в app.locals?

1 Ответ

0 голосов
/ 02 октября 2019

Мы уже набрали express в @types/express. Вам нужно установить его в свой проект с помощью команды npm install -D @types/express.

Затем вы можете расширить существующие экспресс-типы для создания нового типа. Я думаю, что использовать пользовательский namespace в этом случае не годится.

Вы можете увидеть мой пример:

import express from 'express';

// You can put all definitions to another file.
interface IMyExpress extends express.Express {
  locals: {
    someConfig: config;
  }
}

// Cast your app to your custom interface
const app: IMyExpress = express();

app.locals.someConfig = {/**YOU_CONFIG */};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...