Faz parte do material de TypeScript que eu montei a partir das minhas entrevistas. Abaixo, a resposta em inglês e, quando existe, a pegadinha mais comum.
A runtime condition that narrows a type, such as typeof, instanceof, an in check, or a user-defined predicate returning value is User.
Trap: TypeScript trusts a custom predicate's declared result. Writing return true does not validate a User. Check the actual required fields, and handle null separately because typeof null is "object".
Essa pergunta tem uma armadilha que derruba muita gente em entrevista. Ela está marcada na resposta acima: vale reler antes de treinar.
Ler é o primeiro passo. No app, essa pergunta vira flashcard com repetição espaçada, e o módulo tem quiz e simulado para testar o que ficou.
Treinar essa pergunta no app