---
id: FP-TS-001
category: "[[10_Wiki/💡 Topics/AI]]"
confidence_score: 1.0
tags: [typescript, functional-programming, immutability, pure-functions]
last_reinforced: 2026-04-26
---

# [[Functional Programming in TypeScript (함수형 프로그래밍)]]

## 📌 한 줄 통찰 (The Karpathy Summary)
> "데이터를 바꾸지 말고, 새로운 데이터를 파이프라인으로 흘려보내라" — 불변성과 순수 함수를 통해 부수 효과(Side-effects)를 제거하고, 코드의 예측 가능성을 극대화하는 프로그래밍 패러다임.

## 📖 구조화된 지식 (Synthesized Content)
- **추출된 패턴:** 상태 변화를 추적하는 대신, 입력에 대해 항상 동일한 출력을 내놓는 함수들을 조합(Composition)하여 복잡한 로직을 구성하는 선언적 패턴.
- **세부 내용:**
    - **Immutability:** 기존 데이터를 직접 수정(Mutation)하지 않고, 전개 연산자(`...`) 등을 사용하여 새로운 사본을 생성.
    - **Pure Functions:** 외부 상태에 의존하거나 수정하지 않는 함수. 테스트와 디버깅이 매우 쉬움.
    - **Higher-Order Functions:** 함수를 인자로 받거나 결과로 반환 (예: `map`, `filter`, `reduce`).
    - **Type Safety:** TypeScript의 강력한 제네릭과 Readonly 타입을 활용하여 컴파일 타임에 불변성을 강제.
    - **Declarative Code:** '어떻게(How)'가 아닌 '무엇(What)'을 할 것인지 기술하여 코드의 의도를 명확히 함.

## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 성능상의 이유로 가변 객체를 선호하던 과거와 달리, 현대의 JS 엔진 최적화와 메모리 관리 능력 향상으로 불변 객체 사용이 성능과 안정성 사이의 최적의 타협점이 됨.
- **정책 변화:** Antigravity 프로젝트의 핵심 비즈니스 로직은 함수형 패러다임을 따라 작성하며, 상태 관리는 Redux나 Zustand와 같은 불변성 지향 라이브러리를 사용함.

## 🔗 지식 연결 (Graph)
- **Parent:** [[10_Wiki/💡 Topics/AI]]
- **Related:** [[Immutability]], [[Pure-Functions]], [[Monad]], [[Reactive-Programming]]
- **Raw Source:** [[10_Wiki/Topics/AI/Functional-Programming-in-TypeScript.md]]
