TypeScript Type Guards, Unions & Intersections Explained | DailyDevLists