TypeScript의 인터페이스 분리 원칙
Clients shouldn’t be forced to depend on methods they do not use.
이 원칙의 이면에 있는 아이디어는 큰 인터페이스보다 더 작고 더 구체적인 인터페이스를 갖는 것이 더 낫다는 것입니다.
많은 기능을 포함하는 인터페이스가 하나만 있는 경우 해당 인터페이스의 클라이언트는 필요하지 않은 동작을 구현해야 합니다. 대신 인터페이스가 더 작은 경우 클라이언트는 필요한 동작만 구현할 수 있습니다.
또 다른 이점은 인터페이스를 업데이트할 때 변경 사항이 더 적은 클라이언트에 영향을 미치므로 코드를 깨뜨릴 위험이 적다는 것입니다.
클래스는 여러 인터페이스를 구현할 수 있으므로 하나의 인터페이스에 모든 것을 포함할 필요가 없습니다.
다음 나쁜 예에서 우리는 2가지 방법을 가진 동물을 위한 인터페이스를 가지고 있습니다: 걷기와 날기.
보시다시피
Dog
클래스는 fly 메서드가 필요하지 않더라도 fly 메서드를 구현해야 합니다.interface Animal {
walk(): void;
fly(): void;
}
class Dog implements Animal {
walk() {
console.log("Walking");
}
fly() {
throw new Error("Dogs cannot fly");
}
}
class Duck implements Animal {
walk() {
console.log("Walking");
}
fly() {
console.log("Flying");
}
}
이 원칙에 따라
Animal
인터페이스를 여러 인터페이스로 분할할 수 있습니다. 이렇게 하면 Dog
클래스는 필요한 메서드만 구현하면 됩니다.interface AnimalCanWalk {
walk(): void;
}
interface AnimalCanFly {
fly(): void;
}
class Dog implements AnimalCanWalk {
walk() {
console.log("Walking");
}
}
class Duck implements AnimalCanWalk, AnimalCanFly {
walk() {
console.log("Walking");
}
fly() {
console.log("Flying");
}
}
Reference
이 문제에 관하여(TypeScript의 인터페이스 분리 원칙), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jmalvarez/interface-segregation-principle-in-typescript-4dgb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)