Напиши тип Middle Объединения и сужение обновлено
Пользовательский type guard
Вопрос
Какой должна быть сигнатура возвращаемого значения, чтобы функция сужала тип до User?
function isUser(x: unknown): /* ? */ { return typeof x === 'object' && x !== null && 'id' in x; }
Попробуйте сами
Напишите тип, как написали бы в коде.
Показать ответ и разбор
Коротко
Правильный тип: x is User. Ответ Почему так x is User - type predicate: возвращает boolean, но компилятор сужает тип в ветке.
Правильный тип
x is User
Разбор
Ответ
x is User
Почему так
x is User - type predicate: возвращает boolean, но компилятор сужает тип в ветке. Для классов достаточно instanceof, для union - поле-дискриминатор.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.