Jak opravit config.záhlaví.Povolení "Objekt je pravděpodobně nedefinované" při použití axios stíhači

0

Otázka

Mám následující kód :

loggedInAxios.interceptors.request.use(
  async (config) => {
    if (isTokenExpired('access_token')) {
      const response = await getRefreshToken();
      await refreshAccessToken(response);
    }
    const accessToken = localStorage.getItem('access_token');
    config.headers.Authorization = `Bearer ${accessToken}`;
    return config;
  },
  (error) => error
);

Ale strojopis si stěžuje, že config.záhlaví.Povolení objekt je pravděpodobně definováno.

Našel jsem způsob, přidáním následující:

if (!config) {
 config = {};
}
if (!config.headers) {
  config.headers = {};
}

Ale nemyslím si, že to je nejlepší způsob, jak to udělat...

axios typescript
2021-11-23 17:24:56
2
1

Můžete buď použít ! (non-možnou hodnotou null tvrzení operátora) říct, Strojopis, že vlastnost není definována, nebo null (za předpokladu, že jste si 100% JISTÝ), nebo podívat se na to a přiřadit to, jestli je to nedefinované.

Příklad 1:

config.headers!.Authorization = `Bearer ${accessToken}`;

Příklad 2:

config.headers = config.headers ?? {};

Příklad 3:

if(!config.headers) config.headers =  {};

Nemyslím si, že tam jsou nějaké další způsoby.

2021-11-24 00:43:59
1

config je typu AxiosRequestConfig, proto nemůže být definován.

Na druhou stranu, config.header skutečně může být. Jak to je Record (export type AxiosRequestHeaders = Record<string, string>;), můžete skutečně výchozí je prázdný objekt:

loggedInAxios.interceptors.request.use(
  async (config: AxiosRequestConfig) => {
    if (config.headers === undefined) {
      config.headers = {};
    }
    // ...
    return config;
  },
  (error) => error
);
2021-11-23 18:35:29

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................