【发布时间】:2020-08-20 11:45:17
【问题描述】:
考虑这段代码:
setContext(async (req, { headers }) => {
const token = await getToken(config.resources.gatewayApi.scopes)
const completeHeader = {
headers: {
...headers,
authorization:
token && token.accessToken ? `Bearer ${token.accessToken}` : '',
} as Express.Request,
}
console.log('accessToken: ', completeHeader.headers.authorization)
return completeHeader
})
这会产生以下 TS 错误:
“请求”类型上不存在“授权”属性。
这来自于尝试访问completeHeader.headers.authorization。 authorization 属性在Express.request 接口上确实不可用。奇怪的是,TypeScript 无法从字面量对象中推断出类型,而字面量对象显然是string 类型。如果未定义类型 as Express.Request,则会引发有关不安全的 any 分配的错误。
是否需要为这一领域创建一个新的TS接口?还是我们使用了不正确的类型? authorization 字段看起来像是发送令牌的常用字段。
【问题讨论】:
标签: javascript typescript express