https://vitor-azevedo.medium.com/the-rule-of-three-rot-in-angular-and-typescript-a-practical-approach-a58f262b4290