繁体   English   中英

对象可能是“未定义”的

[英]Object is possibly 'undefined'

所以我在打字稿2.5.3和以下代码的vscode中:

export function isHttpHeaders ( headers: HttpHeaders | undefined ):
headers is HttpHeaders {
    return !!headers && !!headers.get && !!headers.set
}

function headersToHeadersSpec ( options?: RequestOptionsArgs ):
 Headers | undefined {

  const { headers } = options as RequestOptionsArgs

  if ( isHttpHeaders( headers ) ) {
    const reqHeaders = new Headers()
    headers.forEach( reqHeaders.set.bind( reqHeaders ) )
    return reqHeaders
  } else {
    return undefined
  }
}

当我尝试编译时,出于某种原因,行headers.forEach( reqHeaders.set.bind( reqHeaders ) )抱怨标题值可能未定义。 类型防护程序不应该保证该值不是未定义的吗?

该错误来自您对HttpHeaders的定义,该定义将forEach设置为可选成员。

要解决该错误,只需通过删除?将其标记为非可选即可?

interface HttpHeaders {
  get?: string
  set?: string
  forEach (Function): void
}

考虑到您有option? 这意味着参数是可选的 ,它将允许options未定义。 即使您在其他函数中具有检查值的代码,打字稿也不够聪明,无法查看该代码并确定其作用。 您的代码不是编译时安全的,但可能是运行时安全的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM