Я пытаюсь реализовать функцию аутентификации для пользовательских ролей, используя typcript и firebase / store, и заметил что-то странное, когда в asyn c функциях защиты типов используются предохранители. В частности, с .then()
.
Ниже приведен фрагмент кода с проблемой (вне контекста для краткости):
authUser: firebase.User | null;
...
if (authUser) {
this.user(authUser.uid)
.get()
.then(snapshot => {
const dbUser = snapshot.data();
if (dbUser && !dbUser.roles) dbUser.roles = {};
authUser = {
uid: authUser.uid,
email: authUser.email,
emailVerified: authUser.emailVerified,
providerData: authUser.providerData,
...dbUser,
};
next(authUser);
});
} else {
...
}
Компилятор машинописного текста жалуется, что в authUser = { uid: authuser.uid ... }
block, authUser
возможно null
. Как это возможно, когда оно находится внутри оператора if
? Это как-то связано с тем, что функция asyn c?