--- id: P-REINFORCE-AUTO-ED6DC8 category: "[[10_Wiki/๐Ÿ’ก Topics/Programming & Language]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ts-pattern" --- # [[ts-pattern]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ์ง€์‹ ์š”์•ฝ ์ •๋ณด ์ถ”์ถœ ์ค‘... ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **๋„์ž… ๋ฐฐ๊ฒฝ ๋ฐ ์ฃผ์š” ์ด์ :** TypeScript ํ™˜๊ฒฝ์—์„œ ์กฐ๊ฑด์ด ๊ฒน์น˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ํƒ€์ž…์ด ์ถ”๊ฐ€๋  ๋•Œ, ๊ธฐ์กด ๋ถ„๊ธฐ๋ฌธ์—์„œ ์ด๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค [1]. `ts-pattern`์€ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜์˜ ๊ฐ„๊ฒฐํ•œ ํ‘œํ˜„์‹์œผ๋กœ ๋ณต์žกํ•œ ๋ถ„๊ธฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค [1]. ํŠนํžˆ `.exhaustive()`์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์กฐ๊ฑด์—์„œ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ ์ผ€์ด์Šค๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์‚ฌ์ „์— ๊ฐ์ง€ํ•˜๊ณ  ํƒ€์ž… ์—๋Ÿฌ๋ฅผ ๋„์›Œ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ์ฝ”๋“œ๋ฅผ ๋งค์šฐ ์•ˆ์ „ํ•˜๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3]. - **์„ฑ๋Šฅ์  ํ•œ๊ณ„์™€ ์›์ธ:** ๋ฒค์น˜๋งˆํฌ ์ง€ํ‘œ์— ๋”ฐ๋ฅด๋ฉด `ts-pattern`์˜ ์ฃผ์š” ๋ฉ”์„œ๋“œ๋“ค(`.exhaustive()`, `.otherwise()`, `.run()`)์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋ณธ `if/else`, `switch`, ์‚ผํ•ญ ์—ฐ์‚ฐ์ž์— ๋น„ํ•ด ์ดˆ๋‹น ์—ฐ์‚ฐ ์†๋„๊ฐ€ ์•ฝ 99% ๋” ๋А๋ฆฌ๋‹ค๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค [2]. ์ด๋Š” ์ž…๋ ฅ ํƒ€์ž…์˜ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ์‚ฌ์ „์— ๊ณ„์‚ฐํ•˜๊ณ , ๋‚ด๋ถ€์ ์œผ๋กœ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜์˜ ํŒจํ„ด ๋งค์นญ๊ณผ `this`๋ฅผ ํ™œ์šฉํ•œ ํ•จ์ˆ˜ ์ฒด์ด๋‹์œผ๋กœ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ์ตœ์ ํ™”๋œ ๊ธฐ๋ณธ ๋ถ„๊ธฐ๋ฌธ๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค [3]. - **๋Œ€์•ˆ ๋ฐ ์ ์šฉ ์ „๋žต:** ์„ฑ๋Šฅ ๋ฌธ์ œ์™€ ์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋ง์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” `ts-pattern`์„ ๋ฌด์กฐ๊ฑด์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [3]. ๋‹จ์ˆœํ•œ ๋ถ„๊ธฐ ๋กœ์ง์—์„œ๋Š” `early return` ํŒจํ„ด์„ ์“ฐ๊ฑฐ๋‚˜, `switch` ๋ฌธ์— `satisfies` ํ‚ค์›Œ๋“œ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์ผ€์ด์Šค๋ฅผ ํƒ€์ž… ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐฉ์–ดํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค [4]. JSX ์˜์—ญ ๋‚ด์—์„œ๋„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด ์—†์ด ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜ ํ‘œํ˜„(IIFE)์ด๋‚˜ `SwitchCase` ๊ฐ™์€ ์ถ”์ƒํ™” ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ™œ์šฉํ•ด ์„ ์–ธ์ ์ด๊ณ  ์•ˆ์ „ํ•œ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Pattern Matching]], [[Type Inference]], [[TC39]], [[Discriminated Unions]] - **Projects/Contexts:** [[TypeScript ์กฐ๊ฑด๋ถ€ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ ๋ฐ ์ƒํƒœ ๊ด€๋ฆฌ]] - **Contradictions/Notes:** ์ผ๋ถ€ ๋ฒค์น˜๋งˆํฌ๋Š” `ts-pattern`์ด `if/else`๋ณด๋‹ค ์•ฝ 99% ๋А๋ฆฌ๋‹ค๊ณ  ์ฃผ์žฅํ•˜์ง€๋งŒ [2], ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ(๋Œ“๊ธ€)์—์„œ๋Š” ์ด ๋ฒค์น˜๋งˆํฌ๊ฐ€ ์ˆœ์ˆ˜ํ•œ `ts-pattern` ์„ฑ๋Šฅ์ด ์•„๋‹Œ ์™ธ๋ถ€์˜ ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ๊ฐ„(Object Creation Time)์„ ํฌํ•จํ–ˆ๊ฑฐ๋‚˜, ๋ฒค์น˜๋งˆํฌ ํˆด ์ž์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„์„ญ ๋ฌธ์ œ๋กœ ์ธํ•ด ์ฐจ์ด๊ฐ€ ํฌ๊ฒŒ ๊ณผ์žฅ๋˜์—ˆ๋‹ค๋Š” ๋ฐ˜๋ก ์„ ์ œ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” 1~2๋ฐฐ ์ˆ˜์ค€์˜ ์ฐจ์ด์— ๋ถˆ๊ณผํ•˜์—ฌ, ๋‚ฉ๋“ํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ๋Šฅ ์ฐจ์ด์ด๋ฏ€๋กœ ๊ฐ€๋…์„ฑ๊ณผ ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด ์ถฉ๋ถ„ํžˆ ์‚ฌ์šฉํ•  ๋งŒํ•˜๋‹ค๋Š” ์ƒ๋ฐ˜๋œ ์˜๊ฒฌ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค [6, 7]. --- *Last updated: 2026-04-18* - Raw Source: [[00_Raw/2026-04-20/ts-pattern.md]] ---