簡體   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