Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 财产';授权';不存在于类型';请求';_Javascript_Typescript_Express - Fatal编程技术网

Javascript 财产';授权';不存在于类型';请求';

Javascript 财产';授权';不存在于类型';请求';,javascript,typescript,express,Javascript,Typescript,Express,考虑以下代码: setContext(异步(请求,{headers})=>{ const token=await getToken(config.resources.gatewayApi.scopes) 常量completeHeader={ 标题:{ …标题, 授权: token&&token.accessToken?`Bearer${token.accessToken}`:'', }作为明确的要求, } console.log('accessToken:',completeHeader.hea

考虑以下代码:

setContext(异步(请求,{headers})=>{
const token=await getToken(config.resources.gatewayApi.scopes)
常量completeHeader={
标题:{
…标题,
授权:
token&&token.accessToken?`Bearer${token.accessToken}`:'',
}作为明确的要求,
}
console.log('accessToken:',completeHeader.headers.authorization)
返回完整标题
})
这将生成以下TS错误:

类型“请求”上不存在属性“授权”

这来自尝试访问
completeHeader.headers.authorization
。属性
授权
Express.request
界面上确实不可用。奇怪的是,TypeScript无法从literal对象推断类型,而literal对象的类型显然是
string
。当不将类型
定义为Express.Request
时,将抛出一个关于不安全的any赋值的错误

是否需要为这一字段创建新的TS接口?还是我们使用的类型不正确?“授权”字段类似于发送令牌的常用字段。

原因是您正在将
completeHeader.headers
强制为
Express.Request
类型。强制类型将重写推断类型。 您可以通过执行以下操作来扩展强制类型:

as Express.Request & { authorization: string }
或者您可以创建一个全新的类型:

type AuthorizedRequest = Express.Request & { authorization: string };
...
as AuthorizedRequest 
我还尝试将
(token&&token.accessToken?
Bearer${token.accessToken}`:''作为字符串',但没有成功。你的建议很好,谢谢。