--- id: P-REINFORCE-AUTO-7B86BE category: "[[10_Wiki/๐Ÿ’ก Topics/Programming & Language]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - TypeScript API Development" --- # [[TypeScript API Development]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > TypeScript API ๊ฐœ๋ฐœ์€ ๊ฐ•๋ ฅํ•œ ํƒ€์ž… ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ๊ฒฝ๊ณ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ฒ€์ฆํ•˜๊ณ , ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์—๋Ÿฌ ๋ชจ๋ธ์„ ๊ตฌ์ถ•ํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ๊ฒฌ๊ณ ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค [1-3]. ์ด๋ฅผ ํ†ตํ•ด ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์•ˆ์ •์ ์ธ ๋ฐ์ดํ„ฐ ํ†ต์‹  ๊ณ„์•ฝ(Contract)์„ ํ™•๋ฆฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1, 4]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๊ฒฝ๊ณ„์—์„œ์˜ ํŒŒ์‹ฑ (Parse, don't validate)** API ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ์ด๋ฃจ์–ด์ง€๋Š” ์‹œ์Šคํ…œ์˜ ๊ฒฝ๊ณ„(Boundary)์—์„œ๋Š” ๋“ค์–ด์˜ค๋Š” ์•Œ ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ ํ•œ ๋ฒˆ ํŒŒ์‹ฑํ•˜์—ฌ ํƒ€์ž…์ด ์™„๋ฒฝํ•˜๊ฒŒ ์ •์˜๋œ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1, 5]. ์ด ์ ‘๊ทผ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ์Šคํ…œ ๋‚ด๋ถ€ ๋กœ์ง ์ „์ฒด์— ๊ฑธ์ณ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ฝ”๋“œ๋ฅผ ํฉ๋ฟŒ๋ฆด ํ•„์š” ์—†์ด ์ •์  ํƒ€์ž… ๋ถ„์„์˜ ์ด์ ์„ ์ตœ๋Œ€ํ•œ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1]. * **๋ช…์‹œ์ ์ธ ์—๋Ÿฌ ๋ฐ˜ํ™˜๊ณผ ์ปจํŠธ๋กค๋Ÿฌ ์„ค๊ณ„** API ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ๋ถ€ํ„ฐ ๋ฐ˜ํ™˜๋˜๋Š” ์‘๋‹ต๊นŒ์ง€์˜ ๋ชจ๋“  ์ œ์–ด ํ๋ฆ„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [6]. ํŠนํžˆ ํ•˜์œ„ ์„œ๋ฒ„ ์‘๋‹ต ์ง€์—ฐ์ด๋‚˜ ์ž˜๋ชป๋œ ์š”์ฒญ(400 Bad Request)๊ณผ ๊ฐ™์€ **์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์—๋Ÿฌ์˜ ๊ฒฝ์šฐ, ์˜ˆ์™ธ(Exception)๋ฅผ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ๋˜์ง€๊ธฐ๋ณด๋‹ค๋Š” ๋ช…์‹œ์ ์ธ ์—๋Ÿฌ ํƒ€์ž…(Result ๊ฐ์ฒด ๋“ฑ)์œผ๋กœ ๋ฐ˜ํ™˜**ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [7, 8]. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” API ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…๋งŒ ๋ณด๊ณ ๋„ ์˜ˆ์ƒ๋˜๋Š” ์—๋Ÿฌ ์ƒํ™ฉ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 9]. * **์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ์œ ๋‹ˆ์˜จ(Discriminated Unions)์„ ํ™œ์šฉํ•œ ์‘๋‹ต ๋ชจ๋ธ๋ง** API์˜ ์‘๋‹ต์€ ์ข…์ข… ๋กœ๋”ฉ, ์„ฑ๊ณต, ์‹คํŒจ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค [3, 10]. **์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ์œ ๋‹ˆ์˜จ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ API ์‘๋‹ต ์ƒํƒœ๋ฅผ ๋งค์šฐ ํšจ๊ณผ์ ์œผ๋กœ ๋ชจ๋ธ๋ง**ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ฒ ์ €ํ•œ ๊ฒ€์‚ฌ(Exhaustiveness Checking)๋ฅผ ํ†ตํ•ด ํŠน์ • ์‘๋‹ต ์ƒํƒœ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๋ˆ„๋ฝ๋˜๋Š” ๊ฒƒ์„ ์ปดํŒŒ์ผ ์‹œ์ ์— ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3, 11]. * **๋ธŒ๋žœ๋””๋“œ ํƒ€์ž…(Branded Types)๊ณผ ๋Ÿฐํƒ€์ž„ ๊ฒ€์ฆ ๊ฒฐํ•ฉ** API๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋Š” `UserId`๋‚˜ `OrderId` ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋Š” ๊ตฌ์กฐ์ ์œผ๋กœ ๋™์ผํ•œ ๋ฌธ์ž์—ด(String) ํƒ€์ž…์ผ์ง€๋ผ๋„ ์˜๋ฏธ์ ์œผ๋กœ ์ฒ ์ €ํžˆ ๊ตฌ๋ถ„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [12, 13]. ์ด๋“ค์„ ํ˜ผ์šฉํ•˜๋Š” ์‹ค์ˆ˜๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด **๋ธŒ๋žœ๋””๋“œ ํƒ€์ž…(Branded Types)์„ ์ ์šฉ**ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ž…๋  ๋•Œ Zod์™€ ๊ฐ™์€ ๋Ÿฐํƒ€์ž„ ๊ฒ€์ฆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋”์šฑ ์•ˆ์ „ํ•˜๊ณ  ๊ฒฌ๊ณ ํ•œ API๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [13, 14]. * **ํผ์‚ฌ๋“œ(Facade) ํŒจํ„ด ๊ธฐ๋ฐ˜์˜ ์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„** API๋‚˜ ์™ธ๋ถ€ ์—ฐ๋™ SDK๋ฅผ ์ œ๊ณตํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ **๋‚ด๋ถ€์˜ ๋ณต์žกํ•œ ๋กœ์ง์„ ๊ฐ์ถ”๊ณ  ์‚ฌ์šฉ์ž์˜ ์˜๋„(Intent)์— ์ดˆ์ ์„ ๋งž์ถ˜ ๊ณ ์ˆ˜์ค€(High-level) ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต**ํ•˜๋Š” ํผ์‚ฌ๋“œ(Facade) ํŒจํ„ด์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค [15, 16]. ๋‹ค๋งŒ, ๋ชจ๋“  ์ƒํ™ฉ์„ ๊ณ ์ˆ˜์ค€ API๋กœ๋งŒ ๋ฎ๊ธฐ๋ณด๋‹ค๋Š” ์„ธ๋ฐ€ํ•œ ์ œ์–ด๋ฅผ ์›ํ•˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ €์ˆ˜์ค€(Low-level) API๋ฅผ ํƒˆ์ถœ๊ตฌ(Escape Hatch)๋กœ ํ•จ๊ป˜ ๊ณต์กด์‹œํ‚ค๋Š” ๊ฒƒ์ด ํ›Œ๋ฅญํ•œ ์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค [16-18]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Parse, don't validate]], [[Discriminated Unions]], [[Branded Types]], [[Facade Pattern]] - **Projects/Contexts:** [[Toss Front SDK]], [[Zod Validation]] - **Contradictions/Notes:** API์˜ ์—๋Ÿฌ ์ฒ˜๋ฆฌ์— ๊ด€ํ•˜์—ฌ, ๋ชจ๋“  ์—๋Ÿฌ๋ฅผ ๊ธ€๋กœ๋ฒŒ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ธฐ(Global Exception Handler)๋กœ ๋„˜๊ธฐ๊ณ  ์ปจํŠธ๋กค๋Ÿฌ ๋กœ์ง์„ ์งง๊ฒŒ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒƒ์ด ๋” ๊น”๋”ํ•˜๋‹ค๋Š” ์ „ํ†ต์ ์ธ ๊ฐ์ฒด ์ง€ํ–ฅ ๋ฐ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ด€์ ๊ณผ, ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์—๋Ÿฌ๋Š” ์˜ˆ์™ธ(Exception)๊ฐ€ ์•„๋‹Œ ๋ช…์‹œ์ ์ธ ์œ ๋‹ˆ์˜จ ํƒ€์ž…์ด๋‚˜ Result ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜ํ•ด์•ผ ์ œ์–ด ํ๋ฆ„์ด ํˆฌ๋ช…ํ•ด์ง„๋‹ค๋Š” ํ•จ์ˆ˜ํ˜• ํƒ€์ž… ์‹œ์Šคํ…œ ๊ด€์ ์ด ์„œ๋กœ ํŒฝํŒฝํ•˜๊ฒŒ ๋Œ€๋ฆฝํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค [8, 19-21]. --- *Last updated: 2026-04-18* - Raw Source: [[00_Raw/2026-04-20/TypeScript API Development.md]] ---