我正在尝试向我的请求添加自定义标头,但必须在界面中对其进行修改/实现。
默认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 因为它更快。
声明中似乎有错误的模块名称。
即使IncomingHttpHeaders
接口Request
从附加到对象express-serve-static-core
,IncomingHttpHeaders
接口的原始来源实际上是http
包的一部分。
以下允许在代码中访问自定义标头并正确编译 ts。
import { IncomingHttpHeaders } from 'http';
declare module 'http' {
interface IncomingHttpHeaders {
"XYZ-Token"?: string
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句