
TypeScript Design Patterns
By :

The open-closed principle declares that you should be able to extend a class' behavior, without modifying it. This principle is raised by Bertrand Meyer in 1988:
Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.
A program depends on all the entities it uses, that means changing the already-being-used part of those entities may just crash the entire program. So the idea of the open-closed principle is straightforward: we'd better have entities that never change in any way other than extending itself.
That means once a test is written and passing, ideally, it should never be changed for newly added features (and it needs to keep passing, of course). Again, ideally.
Consider an API hub that handles HTTP requests to and responses from the server. We are going to have several files written as modules, including http-client.ts
, hub.ts
and app.ts
(but we won't actually write http-client.ts
in this example...