Leveraging TypeScript Utility Types