Я пытаюсь добавить пользовательский заголовок к моему запросу, но он должен быть изменен / реализован в интерфейсе.
Стандартные Request
ссылки на интерфейсы IncomingHttpHeaders
. Поэтому я пытаюсь расширить этот интерфейс с помощью собственного заголовка токена.
import { IncomingHttpHeaders } from 'http';
declare module 'express-serve-static-core' {
interface IncomingHttpHeaders {
"XYZ-Token"?: string
}
}
Я обновил файл .tsconfig
, чтобы прочитать папку ./types
. Имя моего файла: index.d.ts
. Я могу успешно скомпилировать код, если не использую свой пользовательский заголовок, но когда я пытаюсь ссылаться на заголовок токена в коде, я получаю следующую ошибку компиляции:
Ошибка
error TS2538: Type 'string[]' cannot be used as an index type.
req.headers['XYZ-Token']
Если я использую любое из значений исходного интерфейса, все работает нормально.
Пример:
req.headers['user-agent']
Дополнительная информация : Я использую NestJS, которая использует Fastify / Express под капотом. Я могу подтвердить, что используемый интерфейс запроса от Express. Fastify имеет обратную совместимость со всеми модулями Express. В основном используется Fastify, потому что это быстрее.