TypeScript intersection types and branded types for domain validation | Mahamudul Hasan Rubel