유니온 타입을 런타임에 안전하게 처리하는 타입 가드 4가지와, 상태 분기를 깔끔하게 처리하는 Discriminated Union 패턴을 정리한다. API 응답 처리와 결제 상태 관리 예시 포함.
TypeScript 내장 유틸리티 타입은 API 요청/응답 타입을 만들 때 매번 새로 정의하지 않아도 되게 해준다. Partial, Pick, Omit, Record, ReturnType — 실무 패턴 중심으로 정리한다.
TypeScript 제네릭은 Java의 List<T>와 같은 개념이다. any를 쓰지 않고도 다양한 타입을 처리하는 방법, keyof 제약 조건, API 호출 패턴까지 정리한다.
TypeScript에서 타입을 정의하는 두 방법 interface와 type은 비슷해 보이지만 능력이 다르다. 실무 선택 기준과 자주 쓰는 패턴을 정리한다.
Java와 TypeScript를 함께 쓰는 풀스택 개발자 시각으로 TypeScript를 정리한다. '이미 아는 개념인데 왜 다르게 동작하지?'를 해소한다. 구조적 타이핑, 특수 타입, 타입 추론까지 Java와 비교하며 정리한다.
SOLID는 추상적인 원칙이 아니다. Spring의 DI가 DIP의 구현이고, @Transactional이 OCP의 사례다. Spring을 쓰면서 이미 SOLID를 적용하고 있다는 걸 코드로 확인한다.
Spring은 멀티스레드 환경이다. Singleton Bean이 모든 요청에서 공유된다는 게 무슨 의미인지, 동시성 문제가 어떻게 생기고 어떻게 막는지 실제 코드로 정리한다.
ArrayList는 배열이고, HashMap은 버킷 배열이다. 내부 구조를 알면 왜 ArrayList가 빠르고 HashMap이 O(1)인지, 그리고 멀티스레드에서 HashMap이 왜 위험한지 자연스럽게 이해된다.
Heap과 Stack의 차이, GC가 동작하는 원리, OOM이 발생하는 이유. JVM 메모리를 이해하면 Spring 애플리케이션 성능 문제의 원인을 찾는 눈이 생긴다.
인터페이스는 계약, 추상 클래스는 공통 구현 공유. 차이를 표로 외우는 게 아니라 왜 그렇게 설계됐는지 이해하면 언제 뭘 쓸지 자연스럽게 알게 된다.
개인정보처리방침