🔧 Programmierung 🕛 vor 1 Jahr 2 Min Lesezeit
0

[Part 2] A Brief Introduction to SOLID Typescript

↗ Quelle (dev.to)
🗣️ Stimme:




I - Interface Segregation Principle (ISP)



Clients should not be forced to implement interfaces they do not use.



This means interfaces should be small and specific to the needs of the implementing class.

For Example:



❌Bad




CODE
interface Work{
eat(): void;
work(): void;
}

class Developer implements Work{
eat() {
console.log("eat");
}
work() {
console.log("work");
}
}
class Robot implements Work{
eat() {
throw new Error("eat"); // Robot does not need to inherit eat() method
}
work() {
console.log("work");
}
}






✅Good




CODE
interface Workable  {
work(): void;
}
interface Eatable {
eat(): void;
}
class Developer implements Workable, Eatable {
eat() {}

work(): void {
}
}






Base on the strength of interface, one class can implement multiple interfaces. You should break the interface into smaller parts to better suit the need of your class









D - Dependency Inversion Principle (DIP)



*High-level modules should not depend on low-level modules. Both should depend on abstractions.

*


This priciple encourage the use of dependency injection

For Example:



❌Bad




CODE
class BackendDeveloper {
develop(){
console.log("Developing developer");
}
}
class FrontendDeveloper {
develop(){
console.log("FrontendDeveloper");
}
}
class Project {
backendDeveloper: BackendDeveloper;
frontendDeveloper: FrontendDeveloper;
constructor() {
this.backendDeveloper = new BackendDeveloper();
this.frontendDeveloper = new FrontendDeveloper();
}
build(){
this.backendDeveloper.develop();
this.frontendDeveloper.develop();
}
}






In the snippet of code, there are multiple problem.However, the most important problem you can see is:




  • If you want to add MobileDeveloper(), you will need to modify Project() which will impact other method using it


  • Project() is tightly couple to backendDeveloper and frontendDeveloper



✅Good




CODE
interface Developer {
developer(): void
}
class BackendDev implements Developer {
developer() {
console.log("Developer Developer");
}
}
class FrontendDeveloper implements Developer {
developer() {
console.log("Developer Developer");
}
}
class Project {
constructor(private developers: Developer[]) {
}
build(){
this.developers.forEach(developer => {developer.developer();});
}
}







High-level module depends on abstractions (Developer interface).

Low-level modules implement the abstraction.

Loose coupling makes it easy to extend and maintain.



Adding MobileDev:




CODE
class MobileDeveloper implements Developer {
develop() {
console.log("Writing mobile code");
}
}

// Usage
const developers: Developer[] = [
new BackendDeveloper(),
new FrontendDeveloper(),
new MobileDeveloper(), //easy to add and make it does not change in Project()
];
const project = new Project(developers);
project.build();







Thank You :)))

Vollständiger Original-Bericht
Ausführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf dev.to.
↗ Original-Artikel auf dev.to lesen
Wie bewertest du diesen Beitrag?
1 Klick Feedback
Teilen mit Netzwerk & Team:

Community-Analysen & Experten-Meinungen 0

Verfasse deine eigene Analyse, teile Workarounds oder diskutiere diesen Vorfall im Blog.
Noch keine Community-Analyse verfasst. Markiere einen Textabschnitt oder klicke oben auf Eigene Analyse verfassen“!
Community Pulse: Relevanz-Einschätzung
1 Klick Experten-Votum
🔴 Akute Relevanz 0%
🟡 In Evaluierung 0%
🟢 Keine Auswirkung 0%
Spannende Innovation 0%
Verwandte Story-Cluster & Quellen (Vektor-KI)
Port 8095 Engine
4 Quellen
CVE-2026-9176 | IBM WebSphere Application Server 8.5/9.0 improper authentication (WID-SEC-2026-3255)
2 Quellen
CVE-2026-86815 | BackWPup Plugin up to 5.7.4 on WordPress REST API Routes authorization (EUVD-2026-75973)
1 Quelle
CVE-2026-19486 | Google Cloud Gemini Enterprise Agent Platform App Builder prior 2026-06-01 server-side request forgery (EUVD-2026-76021)
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten [Part 2] A Brief Introduction to SOLID Typescript

Thematisch verwandte Begriffe: Part, Brief, Introduction, SOLID · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...