How do type guards work (typeof, in, instanceof, custom predicates)? | LetsGit.IT