Advanced TypeScript Concepts: Classes and Types