입력 모델
User[]처럼 원본 배열과 nullable 필드를 명확히 둔다.
readonly 여부도 결정map/filter/reduce를 나열하는 것보다 입력 타입, 콜백 반환 타입, 좁혀진 타입이 파이프라인 끝까지 유지되는지가 TypeScript의 핵심이다.
User[]처럼 원본 배열과 nullable 필드를 명확히 둔다.
readonly 여부도 결정isActiveUser 같은 type guard를 쓰면 뒤 단계에서 User 타입이 좁혀진다.
boolean 함수와 차이필요한 필드만 뽑아 ViewModel로 변환하고 반환 타입을 추론시킨다.
T → U초기값 타입을 명시해 accumulator가 any로 퍼지지 않게 한다.
empty array 대비