--- id: [[P-Reinforce|P-Reinforce]]-AUTO-[[Nodejs|Nodejs]]G-001 category: "10_Wiki/๐Ÿ’ก Topics/AI" confidence_score: 0.94 tags: [auto-reinforced, nodejs, typescript, software-engineering] last_reinforced: 2026-04-20 --- # [[Nodejs-Global-Namespace-Augmentation|Nodejs-Global-Namespace-Augmentation]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > "์ „์—ญ ๊ณต๊ฐ„์˜ ์•ˆ์ „ํ•œ ํ™•์žฅ: TypeScript ํ™˜๊ฒฝ์—์„œ Node.js์˜ `Global` ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™•์žฅํ•˜์—ฌ, ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ์ปค์Šคํ…€ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์  'ํƒ€ํ˜‘์ '." ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) Node.js ์ „์—ญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํ™•์žฅ(Global Namespace Augmentation)์€ ์ฃผ๋กœ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์ด๋‚˜ ํŠน์ • ํ”„๋ ˆ์ž„์›Œํฌ ์„ค์ • ์‹œ ์ „์—ญ์ ์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์†์„ฑ์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 1. **๊ตฌํ˜„ ๊ธฐ๋ฒ• (Declaration Merging)**: ```typescript declare global { namespace NodeJS { interface Global { myCustomUtility: MyUtilityType; } } } ``` * `declare global` ๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜์—ฌ ์™ธ๋ถ€ ๋ชจ๋“ˆ ๋‚ด์—์„œ๋„ ์ „์—ญ ์Šค์ฝ”ํ”„์— ํƒ€์ž…์„ ๋ณ‘ํ•ฉํ•จ. 2. **์‚ฌ์šฉ ์‚ฌ๋ก€**: * **ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ**: `jest`๋‚˜ `mocha`์—์„œ ์ „์—ญ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋งค์นญ ๋„๊ตฌ(Match Styles) ํ™•์žฅ. * **ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํƒ€์ž…**: `process.env` ์†์„ฑ์— ๋Œ€ํ•œ ์ž๋™ ์™„์„ฑ ๋ฐ ํƒ€์ž… ์ฒดํฌ ์ง€์›( `ProcessEnv` ์ธํ„ฐํŽ˜์ด์Šค ํ™•์žฅ). 3. **์ฃผ์˜์‚ฌํ•ญ**: * ๋‚จ์šฉ ์‹œ ์ด๋ฆ„ ์ถฉ๋Œ(Name Collision) ๋ฐ ์˜์กด์„ฑ ์ถ”์ ์˜ ์–ด๋ ค์›€ ๋ฐœ์ƒ. ์ตœ๋Œ€ํ•œ ๋ชจ๋“ˆํ˜•(Module-based) ์ ‘๊ทผ์„ ์šฐ์„ ํ•ด์•ผ ํ•จ. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ**: ๊ณผ๊ฑฐ์—๋Š” `global.d.ts` ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ–ˆ์œผ๋‚˜, ์ตœ์‹  TypeScript ๋ฒ„์ „๊ณผ ES Modules ์‹œ์Šคํ…œ ํ•˜์—์„œ๋Š” `export {}` ๋“ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํŒŒ์ผ์ด ๋ชจ๋“ˆ๋กœ ์ธ์‹๋˜๊ฒŒ ํ•ด์•ผ ์ „์—ญ ํ™•์žฅ์ด ์ •ํ™•ํžˆ ์ž‘๋™ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ. - **์ •์ฑ… ๋ณ€ํ™”(RL Update)**: ํด๋ฆฐ ์ฝ”๋“œ ํ”„๋ฆฐ์‹œํ”Œ([[_แ„‚แ…ฌแ„‹แ…ช แ„‘แ…กแ†ฏแ„ƒแ…กแ„…แ…ตแ„‹แ…ด แ„‡แ…ฎแ†ซแ„…แ…ต_ - แ„€แ…ชแ†ซแ„‰แ…ตแ†ทแ„‰แ…กแ„‹แ…ด แ„‡แ…ฎแ†ซแ„…แ…ต (Separation of Concerns)|Separation of Concerns]])์— ๋”ฐ๋ผ ์ „์—ญ ๋ณ€์ˆ˜ ์‚ฌ์šฉ์€ ์ ์ง„์ ์œผ๋กœ ์ง€์–‘๋˜๋Š” ์ถ”์„ธ์ด๋‚˜, ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธ‰ ๋Œ€๊ทœ๋ชจ ๋ชจ๋…ธ๋ ˆํฌ์—์„œ๋Š” ๊ณตํ†ต ์œ ํ‹ธ๋ฆฌํ‹ฐ์˜ ํƒ€์ž… ์ ‘๊ทผ์„ฑ์„ ์œ„ํ•ด ์—„๊ฒฉํ•œ ๊ฑฐ๋ฒ„๋„Œ์Šค ํ•˜์— ์„ ํƒ์ ์œผ๋กœ ํ—ˆ์šฉํ•˜๋Š” ์ •์ฑ…์„ ์ทจํ•จ. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related**: [[TypeScript_Type_Safety|TypeScript_Type_Safety]], Monorepo-Management, [[Separation_of_Concerns|Separation_of_Concerns]], Modular Monolith - **Modern Tech/Tools**: TypeScript Declaration Merging, tsconfig paths. ---