TS7053: Element implicitly has an ‘any’ type because expression of type …..

typescript

可変のオブジェクトキーの存在チェックをしたかったのだが


if(requestOptions.headers && !requestOptions.headers['Content-Type'])){
    requestOptions.headers = {
        ...requestOptions.headers,
        'Content-Type': 'application/json',
    }
}

これだとダメでこんなエラーになる

TS7053: Element implicitly has an 'any' type because expression of type '"Content-Type"' can't be used to index type 'HeadersInit'.
Property 'Content-Type' does not exist on type 'HeadersInit'.

[string, string][] で定義されているので、指定されたキーがあるかないかわからないのでこれはNGらしい。
ということで、この場合は in を使ってチェックする


if(requestOptions.headers && !("Content-Type" in requestOptions.headers)){
    requestOptions.headers = {
        ...requestOptions.headers,
        'Content-Type': 'application/json',
    }
}
タイトルとURLをコピーしました