[英]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.