SOLID 적용 지도

SOLID 타입 경계 적용

TypeScript의 인터페이스, 작은 계약, 생성자 주입은 설계 원칙을 코드가 확인할 수 있는 구조로 바꾸는 도구입니다.

SRP

변경 이유 분리

UserView UserRepository

표시, 저장, 검증 책임을 나누면 UI 변경과 데이터 저장 변경이 서로 흔들리지 않습니다.

OCP

확장 지점 고정

IDiscountStrategy

새 할인 정책은 구현체 추가로 끝나고, 계산기 코드는 기존 계약만 바라봅니다.

LSP

대체 가능한 계약

Flyable Walkable

날 수 없는 대상에게 fly를 강요하지 않으면 기반 타입을 대체해도 런타임 예외가 줄어듭니다.

ISP

작은 인터페이스

Codeable Managable

클라이언트가 쓰지 않는 메서드를 구현하지 않아도 되도록 역할별 계약을 작게 나눕니다.

DIP

구현 대신 추상화

constructor(logger: ILogger)

결제 처리 코드는 파일 로거나 데이터베이스 로거가 아니라 ILogger 계약에 의존합니다.

타입스크립트의 역할

컴파일러가 설계를 대신 해주지는 않지만, 한 번 정한 계약을 잘못 쓰는 지점을 실행 전에 드러내 설계 원칙이 코드에 남도록 돕습니다.