我希望在我的请求中添加一个自定义头部,但它必须在接口中进行修改/实现。
默认的Request
接口引用IncomingHttpHeaders
。因此,我正在尝试使用自己的自定义令牌头扩展此接口。
import { IncomingHttpHeaders } from 'http';
declare module 'express-serve-static-core' {
interface IncomingHttpHeaders {
"XYZ-Token"?: string
}
}
我已经更新了我的.tsconfig
文件,使其读取./types
文件夹。 我的文件名是index.d.ts
如果我不使用自定义标头,我可以成功编译代码,但当我尝试在代码中引用token标头时,会出现以下编译错误:
错误
error TS2538: Type 'string[]' cannot be used as an index type.
req.headers['XYZ-Token']
如果我使用原始接口的任何值,一切都可以正常工作。
例子:
req.headers['user-agent']
额外信息:我正在使用NestJS,它在底层使用Fastify/Express。我可以确认所使用的Request接口来自于Express。Fastify向后兼容所有Express模块。主要使用Fastify是因为它更快。