# [[Parse, don't validate|Parse, don't validate]] ## ๐Ÿ“Œ Brief Summary 'Parse, don't validate(๊ฒ€์ฆํ•˜์ง€ ๋ง๊ณ  ํŒŒ์‹ฑํ•˜๋ผ)'๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ๊ณ„์—์„œ ํƒ€์ž…์ด ์—†๊ฑฐ๋‚˜ ๋А์Šจํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜ ์ •์˜๋œ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์ฒ ํ•™์ž…๋‹ˆ๋‹ค[1]. ์ฝ”๋“œ ์ „๋ฐ˜์— ๊ฑธ์ณ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฒ€์‚ฌํ•˜๋Š” ๋Œ€์‹ , ์‹œ์Šคํ…œ ์ง„์ž…์ ์—์„œ ๋‹จ ํ•œ ๋ฒˆ ํŒŒ์‹ฑํ•˜์—ฌ ์•ˆ์ „ํ•œ ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค[1]. ์ด๋ฅผ ํ†ตํ•ด ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋กœ์ง์˜ ํŒŒํŽธํ™”๋ฅผ ๋ง‰๊ณ  ํƒ€์ž… ๊ฒ€์‚ฌ๊ธฐ์˜ ์ •์  ๋ถ„์„ ๋Šฅ๋ ฅ์„ ๊ทน๋Œ€ํ™”ํ•˜์—ฌ ์ฝ”๋“œ์˜ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค[2, 3]. ## ๐Ÿ“– Core Content - **๊ธฐ๋ณธ ์›์น™ ๋ฐ ํŒŒ์‹ฑ ํ๋ฆ„**: Alexis King์˜ ๋™๋ช… ์•„ํ‹ฐํด์„ ํ†ตํ•ด ๋„๋ฆฌ ์•Œ๋ ค์ง„ ์ด ๊ฐœ๋…์€ ์‹œ์Šคํ…œ์˜ ๊ฒฝ๊ณ„(์ž…๊ตฌ ๋ฐ ์ถœ๊ตฌ)์—์„œ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ ํŒŒ์‹ฑํ•˜๋Š” ๊ฒƒ์„ ํ•ต์‹ฌ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค[1, 2]. ์ด ํŒŒ์‹ฑ ๋‹จ๊ณ„์—์„œ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์™€ ๋ณ€ํ™˜์ด ๋™์‹œ์— ์ด๋ฃจ์–ด์ง€๋ฉฐ, ์ดํ›„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ๋ฆ„์—์„œ๋Š” ์™„์ „ํžˆ ํƒ€์ž…์ด ์ง€์ •๋˜๊ณ  ๊ฒ€์ฆ๋œ ๋ฐ์ดํ„ฐ๋งŒ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค[1]. - **์ˆ˜๋น„์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Defensive Programming)์˜ ์ •์ **: ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ ์—ฌ๋ถ€๋งŒ ํ™•์ธ(Validate)ํ•˜๊ณ  ๋๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ฐ์ดํ„ฐ๋ฅผ ๋” ๊ตฌ์ฒด์ ์ด๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์˜ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜(Parse)ํ•˜์—ฌ ์‹œ์Šคํ…œ ๋‚ด๋ถ€๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค[3]. ์ด๋Š” ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ถˆํ™•์‹คํ•œ ๋ฐ์ดํ„ฐ์˜ ์œ ์ž…์„ ์›์ฒœ์ ์œผ๋กœ ์ฐจ๋‹จํ•˜๋Š” ๊ฒฌ๊ณ ํ•œ ์•„ํ‚คํ…์ฒ˜์  ๋ฐฉ์–ด๋ง‰ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค[3]. - **์ œ์–ด ํ๋ฆ„(Control flow)๊ณผ ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜ ํ–ฅ์ƒ**: ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋กœ์ง์„ ์‹œ์Šคํ…œ ๊ฒฝ๊ณ„์—๋งŒ ๋ฐฐ์น˜ํ•จ์œผ๋กœ์จ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ณณ๊ณณ์— ๊ฒ€์ฆ ์ฝ”๋“œ๊ฐ€ ์–ด์ง€๋Ÿฝ๊ฒŒ ํฉ์–ด์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค[2]. ๊ฒฐ๊ณผ์ ์œผ๋กœ ํƒ€์ž… ์‹œ์Šคํ…œ์˜ ์ •์  ๋ถ„์„์— ๋ฌด๊ฑฐ์šด ์ž‘์—…์„ ์œ„์ž„ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž์˜ ์‹ ๋ขฐ๋ฅผ ๋†’์ด๊ณ , ๊ด€๋ฆฌํ•ด์•ผ ํ•  ์ฝ”๋“œ์˜ ์–‘(Code volume)๊ณผ ๋ณต์žก๋„๋ฅผ ์ค„์ด๋Š” ๋ฐ ํฌ๊ฒŒ ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค[2, 4]. - **๊ตฌํ˜„ ๋ฐฉ๋ฒ• ๋ฐ ์ƒํƒœ๊ณ„ ๋„๊ตฌ**: ์ด ์ฒ ํ•™์„ ์‹คํ˜„ํ•˜๊ธฐ ์œ„ํ•ด Zod์™€ ๊ฐ™์€ ๋Ÿฐํƒ€์ž„ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ/ํŒŒ์‹ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ž์ฃผ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค[3, 5]. ๊ตฌ์ฒด์ ์œผ๋กœ๋Š” Zod ๋“ฑ์„ ํ†ตํ•ด ์•Œ ์ˆ˜ ์—†๋Š”(Unknown) ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜ ์•Œ๋ ค์ง„ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉฐ, ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ์— [[Branded Types|Branded Types]]๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ์‹œ์Šคํ…œ ๋‚ด๋ถ€๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์ด ์ฒ ํ•™์„ ์™„๋ฒฝํžˆ ์‹คํ˜„ํ•˜๋Š” ๊ตฌ์ฒด์  ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค[3, 5]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Branded Types|Branded Types]], [[Zod|Zod]], Defensive Programming, [[แ„Œแ…ฅแ†ผแ„Œแ…ฅแ†จ แ„‡แ…ฎแ†ซแ„‰แ…ฅแ†จ(Static Analysis)|Static Analysis]], [[Structural Typing|Structural Typing]] - **Projects/Contexts:** API Boundary Handling, [[แ„‰แ…กแ†ผแ„แ…ข แ„€แ…ชแ†ซแ„…แ…ต(State Management)|State Management]] - **Contradictions/Notes:** ์†Œ์Šค ๋‚ด์—์„œ ์ด ์ฒ ํ•™์— ๋Œ€ํ•œ ์ƒ๋ฐ˜๋œ ์ฃผ์žฅ์ด๋‚˜ ๋ชจ์ˆœ์€ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ์ƒํƒœ ๊ด€๋ฆฌ(State management) ๋ฌธ์ œ๋‚˜ ๋ณต์žก์„ฑ ์ฆ๊ฐ€๋ฅผ ์™„ํ™”ํ•˜๋Š” TypeScript์˜ ํ•ต์‹ฌ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ์ค‘ ํ•˜๋‚˜๋กœ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค[1, 6]. --- *Last updated: 2026-04-18*