Design patterns (https://refactoring.guru/design-patterns), recreated with TypeScript. Yeah, this is my homework.