One of my favourite features of Flow is the ‘*’ type and having Flow handle the given type based on control flow via “if” checks. You can achieve it somewhat in TypeScript too, IIRC. Neither are quite as powerful as I would like, but then what I would like is basically magic!