Проблема в том, что ваш оператор if if (!user)
не обрабатывает то, что должно произойти, если пользователь имеет значение null / undefined.
Если вы решите вернуться из функции, если пользователь имеет значение null (или undefined)) с
if (!user) {
return
}
TypeScript достаточно умен, чтобы понять, что как только вы попадете в строку passwordMatch, пользователь никогда не будет нулевым