--- id: P-REINFORCE-AUTO-E5BF95 category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ๊ฒฌ๊ณ ํ•œ ๋„๋ฉ”์ธ ๋ชจ๋ธ ๋ฐ API ๊ณ„์•ฝ ์„ค๊ณ„" --- # [[แ„€แ…งแ†ซแ„€แ…ฉแ„’แ…กแ†ซ แ„ƒแ…ฉแ„†แ…ฆแ„‹แ…ตแ†ซ แ„†แ…ฉแ„ƒแ…ฆแ†ฏ แ„†แ…ตแ†พ API แ„€แ…จแ„‹แ…ฃแ†จ แ„‰แ…ฅแ†ฏแ„€แ…จ|๊ฒฌ๊ณ ํ•œ ๋„๋ฉ”์ธ ๋ชจ๋ธ ๋ฐ API ๊ณ„์•ฝ ์„ค๊ณ„]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ๊ฒฌ๊ณ ํ•œ ๋„๋ฉ”์ธ ๋ชจ๋ธ ๋ฐ API ๊ณ„์•ฝ ์„ค๊ณ„๋Š” TypeScript์˜ ์ •์  ํƒ€์ž… ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•˜์—ฌ ์œ ํšจํ•˜์ง€ ์•Š์€ ์ƒํƒœ๋ฅผ ์›์ฒœ ์ฐจ๋‹จํ•˜๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ์œ ๋‹ˆ์˜จ, ๋ธŒ๋žœ๋””๋“œ ํƒ€์ž…, ๋ถˆ๋ณ€์„ฑ ์ œ์•ฝ, ๊ทธ๋ฆฌ๊ณ  "๊ฒ€์ฆํ•˜์ง€ ๋ง๊ณ  ํŒŒ์‹ฑํ•˜๋ผ"์™€ ๊ฐ™์€ ์„ค๊ณ„ ์ฒ ํ•™์„ ๊ฒฐํ•ฉํ•˜์—ฌ, ๊ฒฝ๊ณ„๋ฉด์—์„œ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์•ˆ์ „ํ•œ ๊ณ„์•ฝ์„ ์ˆ˜๋ฆฝํ•ฉ๋‹ˆ๋‹ค. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **"๊ฒ€์ฆํ•˜์ง€ ๋ง๊ณ  ํŒŒ์‹ฑํ•˜๋ผ (Parse, don't validate)":** ์‹œ์Šคํ…œ ๊ฒฝ๊ณ„(API ์ง„์ž…์ ์ด๋‚˜ ์ถœ๊ตฌ)์—์„œ ํƒ€์ž…์ด ์ง€์ •๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๊ฒ€์ฆํ•˜๊ธฐ๋งŒ ํ•˜๋Š” ๋Œ€์‹ , ์ž˜ ์ •์˜๋œ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋กœ ํŒŒ์‹ฑํ•˜์—ฌ ๋ณ€ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1, 2]. Zod์™€ ๊ฐ™์€ ๋Ÿฐํƒ€์ž„ ๊ฒ€์ฆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ธŒ๋žœ๋””๋“œ ํƒ€์ž…๊ณผ ๊ฒฐํ•ฉํ•˜๋ฉด, ์•Œ ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ช…ํ™•ํ•œ ํƒ€์ž…์œผ๋กœ ์ขํžˆ๊ณ  ์‹œ์Šคํ…œ ๋‚ด๋ถ€์—์„œ ์ •์  ๋ถ„์„์˜ ์ด์ ์„ ์˜จ์ „ํžˆ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3, 4]. * **์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ์œ ๋‹ˆ์˜จ(Discriminated Unions)๊ณผ ์™„์ „์„ฑ ๊ฒ€์‚ฌ:** ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฆฌํ„ฐ๋Ÿด ์†์„ฑ์„ ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉํ•˜๋Š” ์œ ๋‹ˆ์˜จ ํƒ€์ž…์„ ํ†ตํ•ด, ๋Ÿฐํƒ€์ž„์— ์œ ํšจํ•˜์ง€ ์•Š์€ ์ƒํƒœ๊ฐ€ ์•„์˜ˆ ํ‘œํ˜„๋  ์ˆ˜ ์—†๋„๋ก ๋„๋ฉ”์ธ์„ ๋ชจ๋ธ๋งํ•ฉ๋‹ˆ๋‹ค [5-7]. ์—ฌ๊ธฐ์— `never` ํƒ€์ž…์„ ํ™œ์šฉํ•œ ์™„์ „์„ฑ ๊ฒ€์‚ฌ(Exhaustiveness checking)๋ฅผ ๋”ํ•˜๋ฉด, ์ƒˆ๋กœ์šด API ์‘๋‹ต ์ƒํƒœ๋‚˜ ๋„๋ฉ”์ธ ๋กœ์ง์ด ์ถ”๊ฐ€๋  ๋•Œ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์ผ€์ด์Šค๋ฅผ ์ปดํŒŒ์ผ ์—๋Ÿฌ๋กœ ์ฆ‰๊ฐ ์žก์•„๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6, 8-10]. * **๋ธŒ๋žœ๋””๋“œ ํƒ€์ž…(Branded Types)์„ ํ†ตํ•œ ๋ช…๋ชฉ์  ํƒ€์ดํ•‘:** TypeScript์˜ ๊ตฌ์กฐ์  ํƒ€์ดํ•‘์ด ๊ฐ–๋Š” ํ•œ๊ณ„(๊ธฐ๋ณธ ํƒ€์ž…์—์˜ ์ง‘์ฐฉ)๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด, ์‹๋ณ„์šฉ ๊ฐ€์ƒ ์†์„ฑ์ด๋‚˜ `unique symbol`์„ ๊ต์ง‘ํ•ฉ์œผ๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ณ ์œ ํ•œ ๋ถˆํˆฌ๋ช… ํƒ€์ž…(Opaque Types)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค [11-14]. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ID์™€ ์ฃผ๋ฌธ ID์ฒ˜๋Ÿผ ๊ตฌ์กฐ๊ฐ€ ๋™์ผํ•œ ๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž์ผ์ง€๋ผ๋„ ์„œ๋กœ ์„ž์—ฌ API ๊ณ„์•ฝ์„ ์œ„๋ฐ˜ํ•˜๋Š” ์น˜๋ช…์ ์ธ ๋ฒ„๊ทธ๋ฅผ ์ปดํŒŒ์ผ ํƒ€์ž„์— ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค [3, 15, 16]. * **`satisfies` ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•œ ์—„๊ฒฉํ•œ ๊ณ„์•ฝ ๊ฐ•์ œ:** ๋ณ€์ˆ˜๋ฅผ ๊ฑฐ์นœ ๊ฐ„์ ‘ ํ• ๋‹น ๊ณผ์ •์—์„œ๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๊ณผ์ž‰ ์†์„ฑ ์ฒดํฌ(Excess Property Checking)๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [17, 18]. ๋ฐฑ์—”๋“œ API ์‘๋‹ต์„ ํ”„๋ก ํŠธ์—”๋“œ ๋ชจ๋ธ๋กœ ๋งคํ•‘ํ•  ๋•Œ `satisfies` ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์ถ”๊ฐ€๋œ ์ดˆ๊ณผ ์†์„ฑ์„ ์—„๊ฒฉํ•˜๊ฒŒ ์—๋Ÿฌ๋กœ ์žก์•„๋‚ด๋ฉด์„œ๋„ ๊ตฌ์ฒด์ ์ธ ๋ฆฌํ„ฐ๋Ÿด ํƒ€์ž… ์ถ”๋ก ์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜์—ฌ ๊ณ„์•ฝ์˜ ์—„๊ฒฉ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์„ ๋™์‹œ์— ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค [19-22]. * **๋ถˆ๋ณ€์„ฑ(Immutability) ํ™•๋ฆฝ:** ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์˜ ๋ฌด๋ถ„๋ณ„ํ•œ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ๋ง‰๊ณ  ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด `readonly` ์ˆ˜์‹์–ด์™€ `DeepReadonly` ์žฌ๊ท€์  ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค [23-25]. ์‹๋ณ„์ž, ์„ค์ • ๊ฐ์ฒด, API ์‘๋‹ต ๋“ฑ ์ ˆ๋Œ€ ๋ณ€๊ฒฝ๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋Š” ํ•ต์‹ฌ ๋ฐ์ดํ„ฐ์— ์ปดํŒŒ์ผ ํƒ€์ž„์˜ ๊ฐ•๋ ฅํ•œ ๋ณดํ˜ธ๋ง‰์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [25, 26]. * **๋„๋ฉ”์ธ ๋ฐฉ์–ด ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์„ค๊ณ„:** ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ์˜ˆ์ƒ ๊ฐ€๋Šฅํ•œ ์‹คํŒจ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋‹จ์ˆœํžˆ `throw`๋กœ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋Œ€์‹ , `Result` ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค [27-30]. ์ด๋ฅผ ํ†ตํ•ด ํ•จ์ˆ˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜ ์ž์ฒด๋ฅผ ๊ฒฌ๊ณ ํ•œ ๊ณ„์•ฝ์œผ๋กœ ๋งŒ๋“ค์–ด, API์˜ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฐ๊ณผ(์˜ค๋ฅ˜ ํฌํ•จ)๋ฅผ ์†Œ๋น„์ž๊ฐ€ ์•ˆ์ „ํ•˜๊ณ  ์ฒ ์ €ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค [28, 29, 31]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Parse, don't validate|Parse, don't validate]], [[แ„‰แ…ตแ†จแ„‡แ…งแ†ฏ แ„€แ…กแ„‚แ…ณแ†ผแ„’แ…กแ†ซ แ„‹แ…ฒแ„‚แ…ตแ„‹แ…ฉแ†ซ (Discriminated Unions)|์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ์œ ๋‹ˆ์˜จ (Discriminated Unions)]], [[แ„‡แ…ณแ„…แ…ขแ†ซแ„ƒแ…ตแ„ƒแ…ณ แ„แ…กแ„‹แ…ตแ†ธ (Branded Types)|๋ธŒ๋žœ๋””๋“œ ํƒ€์ž… (Branded Types)]], [[satisfies แ„‹แ…งแ†ซแ„‰แ…กแ†ซแ„Œแ…ก|Satisfies ์—ฐ์‚ฐ์ž]], [[แ„‡แ…ฎแ†ฏแ„‡แ…งแ†ซแ„‰แ…ฅแ†ผ (Immutability)|๋ถˆ๋ณ€์„ฑ (Immutability)]], Result ํƒ€์ž… - **Projects/Contexts:** Zod๋ฅผ ํ™œ์šฉํ•œ ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ, API ์‘๋‹ต ์ฒ˜๋ฆฌ ๋ฐ ์ƒํƒœ ๋จธ์‹  ๋ชจ๋ธ๋ง - **Contradictions/Notes:** ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด ๊ต์ง‘ํ•ฉ(`&`)๊ณผ ํƒ€์ž… ๋ณ„์นญ(`type`)๋งŒ์œผ๋กœ๋„ ๊ฐ์ฒด๋ฅผ ์กฐํ•ฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์˜ ์„ฑ๋Šฅ๊ณผ ์ปดํŒŒ์ผ๋Ÿฌ ์บ์‹ฑ ์ตœ์ ํ™”๋ฅผ ๊ณ ๋ คํ•  ๋•Œ ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๊ฐ์ฒด ์„ ์–ธ์—๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†(`interface extends`)์„ ์šฐ์„ ์‹œํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [32-34]. ๋˜ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ํ๋ฆ„ ์ œ์–ด๋ฅผ ์œ„ํ•ด ์ „ํ†ต์ ์ธ ์˜ˆ์™ธ(`Exception`) ํˆฌ์ฒ™๋ณด๋‹ค๋Š” `Result` ํŒจํ„ด์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ๋”์šฑ ์•ˆ์ „ํ•œ ์„ค๊ณ„๋กœ ์ œ์‹œ๋ฉ๋‹ˆ๋‹ค [28, 30, 35]. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/๊ฒฌ๊ณ ํ•œ ๋„๋ฉ”์ธ ๋ชจ๋ธ ๋ฐ API ๊ณ„์•ฝ ์„ค๊ณ„.md ---