typescript basic for SOLID principles
The SOLID concepts are
Every class should have only one responsibility.
"Entities should be open for extension, but closed for modification."
"Base classes must be able to use objects of derived classes without knowing it."
"Many client-specific interfaces are better than one general-purpose interface."
"Depend upon abstractions, not concretions."