SOLID 원칙과 TypeScript 타입 경계
TypeScript의 인터페이스, 작은 계약, 생성자 주입은 설계 원칙을 코드가 확인할 수 있는 구조로 바꾸는 도구입니다.
변경 이유 분리
표시, 저장, 검증 책임을 나누면 UI 변경과 데이터 저장 변경이 서로 흔들리지 않습니다.
확장 지점 고정
새 할인 정책은 구현체 추가로 끝나고, 계산기 코드는 기존 계약만 바라봅니다.
대체 가능한 계약
날 수 없는 대상에게 fly를 강요하지 않으면 기반 타입을 대체해도 런타임 예외가 줄어듭니다.
작은 인터페이스
클라이언트가 쓰지 않는 메서드를 구현하지 않아도 되도록 역할별 계약을 작게 나눕니다.
구현 대신 추상화
결제 처리 코드는 파일 로거나 데이터베이스 로거가 아니라 ILogger 계약에 의존합니다.
핵심타입스크립트의 역할 컴파일러가 설계를 대신 해주지는 않지만, 한 번 정한 계약을 잘못 쓰는 지점을 실행 전에 드러내 설계 원칙이 코드에 남도록 돕습니다.