Typescript ругается на свойство response от error в функции createAsyncThunk от redux-toolkit
Что нужно сделать, что бы не было ругани на свойство? Вроде ж кагбэ такого быть не должно, но есть...
ESLint: Unsafe member access .response on an any value.(@typescript-eslint/no-unsafe-member-access)
export const actionFetchDataUser = createAsyncThunk(
'data/user',
async (formVal: TformVal, { rejectWithValue }) => {
try {
const GoogleAuth = window.gapi.auth2.getAuthInstance();
const profileMail = await GoogleAuth.signIn({
scope: 'profile email',
});
const googleEmail = profileMail.getBasicProfile().getEmail();
if (googleEmail !== formVal.email) {
throw Error('There is NO email');
}
return {
name: profileMail.getBasicProfile().getName(),
ava: profileMail.getBasicProfile().getImageUrl(),
};
} catch (err) {
// Here is problem
if (!err.response) {
throw err;
}
return rejectWithValue(err);
}
},
);
Ответы (2 шт):
Автор решения: Руслан
→ Ссылка
Один хороший человек порекомендовал такой способ решения
catch (err) {
const hasErrResponse = (err as { response: { [key: string]: string } }).response;
if (!hasErrResponse) {
throw err;
}
return rejectWithValue(hasErrResponse);
}
Автор решения: Igor Inozemtsev
→ Ссылка
Если я правильно понимаю, линтер сигнализирует о том, что свойство response может отсутствовать в err. В таком случае можно использовать оператор опциональной последовательности. if (!err?.response) {. Если у err не будет свойства response, то вернётся undefined.
Второй вариант - расширить тип для err таким образом, чтобы он определял наличие свойства response.
