Javascript eslint错误对任意值的不安全成员访问[';内容类型';]

Javascript eslint错误对任意值的不安全成员访问[';内容类型';],javascript,typescript,eslint,Javascript,Typescript,Eslint,以下代码生成了以下eslint错误: @typescript eslint/无不安全成员访问:对任意值的不安全成员访问['content-type'] export const getGraphPhoto=async()=>{ 试一试{ const response=wait getGraphDetails( config.resources.msGraphPhoto.uri, config.resources.msGraphPhoto.scopes, {responseType:'arrayb

以下代码生成了以下eslint错误:

@typescript eslint/无不安全成员访问:对任意值的不安全成员访问['content-type']

export const getGraphPhoto=async()=>{
试一试{
const response=wait getGraphDetails(
config.resources.msGraphPhoto.uri,
config.resources.msGraphPhoto.scopes,
{responseType:'arraybuffer'}
)
if(!(响应和响应数据)){
返回“”
}
const imageBase64=新缓冲区(response.data,'binary')。toString('base64'))
返回`data:${response.headers['content-type']};base64,${imageBase64}`
}捕获(错误){
抛出新错误(`检索图形照片失败:${Error as string}`)
}
}

promise
getGraphDetails
返回
promise

我已经有一段时间没有使用TypeScript了,所以我希望我没有犯任何错误。。。我认为,该规则的目的不是阻止对不存在的财产的访问,而是警告任何被称为
any
(显式或隐式)的对象对财产的访问。该规则不考虑是否有代码检查此属性是否存在,而只考虑对象的类型。如果未警告访问
response.data
response.headers
,但仅访问
response。headers['content-type']
,我猜
getGraphDetails
响应已键入,但
headers
属性已键入为
any
。我认为你有三个选择:

  • 将类型设置为响应标题。我不确定您是否可以在现有项目中找到一个接口,但是,如果没有,您可以根据需要声明一个明确的接口,并像这样使用它:
接口响应负责人{
“内容类型”:字符串,
[key:string]:string,//您可以设置更显式的头名称,甚至可以删除上面的名称,只设置此行
}
const headers:ResponseHeaders=response.headers;
  • 禁用此行或整个文件的规则

  • 忽略警告


这些错误只是被记录下来的,不是吗?我的意思是,他们没有阻止阻止应用程序运行的错误。这是一个很好的解释,谢谢。我想知道的一件事是,为什么TypeScript本身没有被这个问题绊倒,而只有linter在抱怨?