๐Ÿš€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ ์ดํ•ดํ•˜๊ธฐ ๐Ÿš€

์ฝ˜ํ…์ธ  ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ - ๐Ÿš€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ ์ดํ•ดํ•˜๊ธฐ ๐Ÿš€

 

 

์•ˆ๋…•ํ•˜์„ธ์š”, ์—ฌ๋Ÿฌ๋ถ„! ์˜ค๋Š˜์€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ๊นŠ์ด ์žˆ๊ฒŒ ์•Œ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณผ ๊ฑฐ์˜ˆ์š”. ๐Ÿค“ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์Šˆํผ์…‹์œผ๋กœ, ๊ฐ•๋ ฅํ•œ ํƒ€์ž… ์‹œ์Šคํ…œ๊ณผ ํ•จ๊ป˜ ๋ชจ๋“ˆํ™”๋œ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋งˆ์น˜ ์žฌ๋Šฅ๋„ท์—์„œ ๋‹ค์–‘ํ•œ ์žฌ๋Šฅ์„ ๋ชจ๋“ˆ์ฒ˜๋Ÿผ ์กฐํ•ฉํ•ด ์ƒˆ๋กœ์šด ๊ฐ€์น˜๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜์ฃ !

๐Ÿ’ก ์•Œ๊ณ  ๊ณ„์…จ๋‚˜์š”? ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์€ ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ํ•„์ˆ˜์ ์ธ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œ์ผœ์ฃผ์ฃ !

์ž, ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ๊นŒ์š”? ๋งˆ์น˜ ์žฌ๋Šฅ๋„ท์—์„œ ๋‹ค์–‘ํ•œ ์žฌ๋Šฅ์„ ์ฐพ์•„๋ณด๋“ฏ, ์šฐ๋ฆฌ๋„ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ ๊ธฐ๋Šฅ์„ ํƒํ—˜ํ•ด๋ด…์‹œ๋‹ค! ๐Ÿ•ต๏ธโ€โ™‚๏ธ

๐Ÿ“ฆ ๋ชจ๋“ˆ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋ชจ๋“ˆ์€ ๊ฐ„๋‹จํžˆ ๋งํ•ด ์ฝ”๋“œ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ชจ๋“ˆ์€ ํŒŒ์ผ ๋‹จ์œ„๋กœ ์ •์˜๋˜๋ฉฐ, ๊ฐ ํŒŒ์ผ์€ ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“ˆ์˜ ์ฃผ์š” ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ์ฝ”๋“œ์˜ ์บก์Šํ™”: ๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜, ํ•จ์ˆ˜, ํด๋ž˜์Šค ๋“ฑ์„ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์žฌ์‚ฌ์šฉ์„ฑ: ํ•œ ๋ฒˆ ์ž‘์„ฑํ•œ ๋ชจ๋“ˆ์„ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜์กด์„ฑ ๊ด€๋ฆฌ: ๋ชจ๋“ˆ ๊ฐ„์˜ ์˜์กด ๊ด€๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ œ๊ณต: ์ „์—ญ ์Šค์ฝ”ํ”„์˜ ์˜ค์—ผ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŒŸ ํŒ: ๋ชจ๋“ˆ์„ ์ž˜ ํ™œ์šฉํ•˜๋ฉด, ๋งˆ์น˜ ์žฌ๋Šฅ๋„ท์—์„œ ๋‹ค์–‘ํ•œ ์žฌ๋Šฅ์„ ์กฐํ•ฉํ•ด ๋ฉ‹์ง„ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ตฌ์กฐํ™”ํ•  ์ˆ˜ ์žˆ์–ด์š”!

์ด์ œ ๋ชจ๋“ˆ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์„ ์•Œ์•˜์œผ๋‹ˆ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ์–ด๋–ป๊ฒŒ ๋ชจ๋“ˆ์„ ์ •์˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š”์ง€ ์ž์„ธํžˆ ์‚ดํŽด๋ณผ๊นŒ์š”? ๐Ÿง

๐Ÿ“ค ๋ชจ๋“ˆ ๋‚ด๋ณด๋‚ด๊ธฐ (Exporting)

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ชจ๋“ˆ์˜ ์ผ๋ถ€๋ฅผ ์™ธ๋ถ€๋กœ ๊ณต๊ฐœํ•˜๋ ค๋ฉด 'export' ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋งˆ์น˜ ์žฌ๋Šฅ๋„ท์—์„œ ์ž์‹ ์˜ ์žฌ๋Šฅ์„ ๊ณต๊ฐœํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜์ฃ ! ๐Ÿ˜‰

๋ชจ๋“ˆ์„ ๋‚ด๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:

1. ๊ฐœ๋ณ„ ๋‚ด๋ณด๋‚ด๊ธฐ


// math.ts
export const PI = 3.14159;
export function square(x: number): number {
    return x * x;
}
export class Circle {
    constructor(public radius: number) {}
    area(): number {
        return PI * this.radius * this.radius;
    }
}
  

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด PI, square ํ•จ์ˆ˜, Circle ํด๋ž˜์Šค๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์ด๋ฆ„ ๋ฐ”๊ฟ” ๋‚ด๋ณด๋‚ด๊ธฐ


// math.ts
function add(a: number, b: number): number {
    return a + b;
}
export { add as sum };
  

add ํ•จ์ˆ˜๋ฅผ sum์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด๋Š” ํ•จ์ˆ˜์˜ ์ด๋ฆ„์„ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“ค๊ฑฐ๋‚˜, ์ด๋ฆ„ ์ถฉ๋Œ์„ ํ”ผํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

3. ๊ธฐ๋ณธ ๋‚ด๋ณด๋‚ด๊ธฐ


// greeter.ts
export default function greet(name: string): string {
    return `Hello, ${name}!`;
}
  

default ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ๋ชจ๋“ˆ์˜ ๊ธฐ๋ณธ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ˆ๋‹น ํ•˜๋‚˜์˜ ๊ธฐ๋ณธ ๋‚ด๋ณด๋‚ด๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์ฐธ๊ณ : ๊ธฐ๋ณธ ๋‚ด๋ณด๋‚ด๊ธฐ๋Š” ํ•ด๋‹น ๋ชจ๋“ˆ์˜ "๋Œ€ํ‘œ" ๊ธฐ๋Šฅ์„ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์น˜ ์žฌ๋Šฅ๋„ท์—์„œ ์ž์‹ ์˜ ๋Œ€ํ‘œ ์žฌ๋Šฅ์„ ๋‚ด์„ธ์šฐ๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜์ฃ !

4. ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ์ฒด๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ


// math.ts
const PI = 3.14159;
function square(x: number): number {
    return x * x;
}
class Circle {
    constructor(public radius: number) {}
    area(): number {
        return PI * this.radius * this.radius;
    }
}

export { PI, square, Circle };
  

์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ํ•ญ๋ชฉ์„ ํ•œ ๋ฒˆ์— ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์˜ ๋๋ถ€๋ถ„์—์„œ ํ•œ๊บผ๋ฒˆ์— ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ •์˜ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“ˆ ๋‚ด๋ณด๋‚ด๊ธฐ ๊ฐœ๋…๋„ ๋ชจ๋“ˆ (math.ts) PI square() Circle export

์ด๋ ‡๊ฒŒ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ชจ๋“ˆ์„ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฐฉ๋ฒ•์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ์ ˆํžˆ ์„ ํƒํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ž‘์€ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋“ค์€ ๊ฐœ๋ณ„ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ, ํฐ ํด๋ž˜์Šค๋‚˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๊ธฐ๋ณธ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹์œผ๋กœ์š”.

๋‹ค์Œ์œผ๋กœ, ์ด๋ ‡๊ฒŒ ๋‚ด๋ณด๋‚ธ ๋ชจ๋“ˆ์„ ์–ด๋–ป๊ฒŒ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿš€

๐Ÿ“ฅ ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ (Importing)

๋ชจ๋“ˆ์„ ๋‚ด๋ณด๋ƒˆ๋‹ค๋ฉด, ์ด์ œ ๊ทธ๊ฒƒ์„ ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•  ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋งˆ์น˜ ์žฌ๋Šฅ๋„ท์—์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์žฌ๋Šฅ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ฃ ! ๐Ÿ˜Š

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:

1. ์ด๋ฆ„์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ


// app.ts
import { PI, square, Circle } from './math';

console.log(PI);  // 3.14159
console.log(square(4));  // 16
const circle = new Circle(5);
console.log(circle.area());  // ์•ฝ 78.54
  

์ค‘๊ด„ํ˜ธ {} ์•ˆ์— ๊ฐ€์ ธ์˜ฌ ํ•ญ๋ชฉ์˜ ์ด๋ฆ„์„ ๋‚˜์—ดํ•˜์—ฌ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ ธ์˜ค๊ธฐ


// app.ts
import { PI as pi, square as sq, Circle as Circ } from './math';

console.log(pi);  // 3.14159
console.log(sq(4));  // 16
const circle = new Circ(5);
console.log(circle.area());  // ์•ฝ 78.54
  

as ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ ธ์˜จ ํ•ญ๋ชฉ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด๋ฆ„ ์ถฉ๋Œ์„ ํ”ผํ•˜๊ฑฐ๋‚˜, ๋” ์งง๊ณ  ๊ฐ„๊ฒฐํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

3. ๋ชจ๋“  ๋‚ด์šฉ์„ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ


// app.ts
import * as Math from './math';

console.log(Math.PI);  // 3.14159
console.log(Math.square(4));  // 16
const circle = new Math.Circle(5);
console.log(circle.area());  // ์•ฝ 78.54
  

* as ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“ˆ์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๋ชจ๋“ˆ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜, ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

4. ๊ธฐ๋ณธ ๋‚ด๋ณด๋‚ด๊ธฐ ๊ฐ€์ ธ์˜ค๊ธฐ


// app.ts
import greet from './greeter';

console.log(greet('Alice'));  // "Hello, Alice!"
  

๊ธฐ๋ณธ ๋‚ด๋ณด๋‚ด๊ธฐ๋Š” ์ค‘๊ด„ํ˜ธ {} ์—†์ด ์ง์ ‘ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ์ž์œ ๋กญ๊ฒŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ชจ๋“ˆ์—์„œ ์ •์˜ํ•œ ์ด๋ฆ„๊ณผ ๋‹ฌ๋ผ๋„ ๋ฉ๋‹ˆ๋‹ค.

โš ๏ธ ์ฃผ์˜: ๊ธฐ๋ณธ ๋‚ด๋ณด๋‚ด๊ธฐ์™€ ์ด๋ฆ„ ์žˆ๋Š” ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ๋™์‹œ์— ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค:

import defaultExport, { namedExport1, namedExport2 } from './module';

5. ๋ถ€์ˆ˜ ํšจ๊ณผ๋ฅผ ์œ„ํ•œ ๊ฐ€์ ธ์˜ค๊ธฐ


// app.ts
import './polyfills';
  

๋ชจ๋“ˆ์—์„œ ์•„๋ฌด๊ฒƒ๋„ ๊ฐ€์ ธ์˜ค์ง€ ์•Š๊ณ  ๋‹จ์ˆœํžˆ ์‹คํ–‰๋งŒ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ํด๋ฆฌํ•„(polyfill)์ด๋‚˜ ์ „์—ญ ์Šคํƒ€์ผ ๋“ฑ์„ ์ ์šฉํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ ๊ฐœ๋…๋„ math.ts PI square() Circle app.ts import { PI, square, Circle } from './math'; console.log(PI); console.log(square(4)); const circle = new Circle(5); console.log(circle.area());

์ด๋ ‡๊ฒŒ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ƒํ™ฉ์— ๋งž๋Š” ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜๋งŒ ํ•„์š”ํ•  ๋•Œ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ, ์ „์ฒด ๋ชจ๋“ˆ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” * as ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ์‹์œผ๋กœ์š”.

๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ์ž˜ ํ™œ์šฉํ•˜๋ฉด, ๋งˆ์น˜ ์žฌ๋Šฅ๋„ท์—์„œ ๋‹ค์–‘ํ•œ ์žฌ๋Šฅ์„ ์กฐํ•ฉํ•ด ๋ฉ‹์ง„ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ตฌ์กฐํ™”ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค! ๐ŸŒŸ

๋‹ค์Œ์œผ๋กœ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์˜ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ค€๋น„๋˜์…จ๋‚˜์š”? ๐Ÿš€

๐Ÿ” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์˜ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

์ž, ์ด์ œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์˜ ๋” ๊นŠ์€ ๋ถ€๋ถ„์„ ํƒํ—˜ํ•ด๋ณผ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค! ์ด ๋ถ€๋ถ„์€ ๋งˆ์น˜ ์žฌ๋Šฅ๋„ท์—์„œ ๊ณ ๊ธ‰ ์žฌ๋Šฅ์„ ์ฐพ์•„๋ณด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„์š”. ๋” ๋ณต์žกํ•˜์ง€๋งŒ, ๊ทธ๋งŒํผ ๋” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ๋“ค์„ ๋งŒ๋‚˜๋ณผ ์ˆ˜ ์žˆ์ฃ . ๐Ÿ˜Ž

1. ๋™์  ์ž„ํฌํŠธ (Dynamic Imports)

๋™์  ์ž„ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•„์š”ํ•œ ์‹œ์ ์— ๋ชจ๋“ˆ์„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ , ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ํ•„์š”ํ•  ๋•Œ ๋กœ๋“œํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.


// app.ts
async function loadMathModule() {
    const math = await import('./math');
    console.log(math.square(4));  // 16
}

loadMathModule();
  

import() ํ•จ์ˆ˜๋Š” Promise๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ, async/await ๊ตฌ๋ฌธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ํŒ: ๋™์  ์ž„ํฌํŠธ๋Š” ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ฝ”๋“œ ๋ถ„ํ• (Code Splitting)์„ ๊ตฌํ˜„ํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์žฌ๋Šฅ๋„ท์—์„œ ํ•„์š”ํ•œ ์žฌ๋Šฅ๋งŒ ๊ทธ๋•Œ๊ทธ๋•Œ ์ฐพ์•„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜์ฃ !

2. ๋ชจ๋“ˆ ์ฆ๊ฐ• (Module Augmentation)

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๊ธฐ์กด ๋ชจ๋“ˆ์— ์ƒˆ๋กœ์šด ์„ ์–ธ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ชจ๋“ˆ ์ฆ๊ฐ•์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.


// types.d.ts
import { Circle } from './math';

declare module './math' {
    interface Circle {
        circumference(): number;
    }
}

// app.ts
import { Circle } from './math';

const circle = new Circle(5);
circle.circumference();  // ํƒ€์ž… ์—๋Ÿฌ ์—†์Œ!
  

์ด ๊ธฐ๋Šฅ์€ ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ๊ธฐ์กด ํƒ€์ž…์„ ํ™•์žฅํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

3. ์•ฐ๋น„์–ธํŠธ ๋ชจ๋“ˆ (Ambient Modules)

์•ฐ๋น„์–ธํŠธ ๋ชจ๋“ˆ์€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—๊ฒŒ ๋ชจ๋“ˆ์˜ ํ˜•ํƒœ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์„ ์–ธ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ๋•Œ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.


// types/my-library.d.ts
declare module 'my-library' {
    export function doSomething(): void;
    export const VERSION: string;
}

// app.ts
import { doSomething, VERSION } from 'my-library';

doSomething();
console.log(VERSION);
  

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ํƒ€์ž… ์ฒดํฌ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ๋ชจ๋“ˆ ํ•ด์„ (Module Resolution)

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ๋ชจ๋“ˆ์„ ์–ด๋–ป๊ฒŒ ์ฐพ๊ณ  ๋กœ๋“œํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ชจ๋“ˆ ํ•ด์„ ์ „๋žต์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ „๋žต์€ ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค:

  • Classic: ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์ œํ•œ์ ์ธ ํ•ด์„ ์ „๋žต
  • Node: Node.js์˜ ๋ชจ๋“ˆ ํ•ด์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ชจ๋ฐฉํ•œ ์ „๋žต

tsconfig.json ํŒŒ์ผ์—์„œ moduleResolution ์˜ต์…˜์„ ํ†ตํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:


{
    "compilerOptions": {
        "moduleResolution": "node"
    }
}
  

โš ๏ธ ์ฃผ์˜: ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ "node" ์ „๋žต์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋Š” Node.js ์ƒํƒœ๊ณ„์™€์˜ ํ˜ธํ™˜์„ฑ์„ ๋†’์ด๊ณ , ๋” ์œ ์—ฐํ•œ ๋ชจ๋“ˆ ํ•ด์„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

5. ๊ฒฝ๋กœ ๋งคํ•‘ (Path Mapping)

๊ฒฝ๋กœ ๋งคํ•‘์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“ˆ ์ž„ํฌํŠธ ์‹œ ๋ณ„์นญ(alias)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ธด ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.


// tsconfig.json
{
    "compilerOptions": {
        "baseUrl": ".",
        "paths": {
            "@utils/*": ["src/utils/*"],
            "@components/*": ["src/components/*"]
        }
    }
}

// app.ts
import { formatDate } from '@utils/date';
import { Button } from '@components/Button';
  

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด ๊ธด ์ƒ๋Œ€ ๊ฒฝ๋กœ ๋Œ€์‹  ๊ฐ„๋‹จํ•œ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์น˜ ์žฌ๋Šฅ๋„ท์—์„œ ๋ณต์žกํ•œ ์žฌ๋Šฅ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๊ฐ„๋‹จํ•œ ํƒœ๊ทธ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜์ฃ !

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์˜ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์˜ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ๋™์  ์ž„ํฌํŠธ ๋ชจ๋“ˆ ์ฆ๊ฐ• ์•ฐ๋น„์–ธํŠธ ๋ชจ๋“ˆ ๋ชจ๋“ˆ ํ•ด์„ ๊ฒฝ๋กœ ๋งคํ•‘ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ์—ฐ๊ฒฐ

์ด๋Ÿฌํ•œ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ๋“ค์„ ์ž˜ ํ™œ์šฉํ•˜๋ฉด, ๋”์šฑ ํšจ์œจ์ ์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์น˜ ์žฌ๋Šฅ๋„ท์—์„œ ๋‹ค์–‘ํ•œ ๊ณ ๊ธ‰ ์žฌ๋Šฅ์„ ์กฐํ•ฉํ•ด ๋” ๋ณต์žกํ•˜๊ณ  ํ˜์‹ ์ ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ฃ ! ๐Ÿš€

์ด์ œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์˜ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ ์ ˆํžˆ ํ™œ์šฉํ•˜๋ฉด ์ฝ”๋“œ์˜ ๊ตฌ์กฐ์™€ ๊ฐ€๋…์„ฑ, ๊ทธ๋ฆฌ๊ณ  ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ, ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ ์–ด๋–ป๊ฒŒ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ช‡ ๊ฐ€์ง€ ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ‘ฉโ€๐Ÿ’ป

๐ŸŒŸ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋งˆ์น˜ ์žฌ๋Šฅ๋„ท์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํŒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค! ๐Ÿ˜‰

1. ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ ์ค€์ˆ˜

๊ฐ ๋ชจ๋“ˆ์€ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ง€๋„๋ก ์„ค๊ณ„ํ•˜์„ธ์š”. ์ด๋Š” ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.


// ์ข‹์€ ์˜ˆ: user.ts
export interface User {
    id: number;
    name: string;
}

export function createUser(name: string): User {
    return { id: Date.now(), name };
}

// ๋‚˜์œ ์˜ˆ: userAndPost.ts
export interface User { /* ... */ }
export interface Post { /* ... */ }
export function createUser() { /* ... */ }
export function createPost() { /* ... */ }
  

2. ๋ช…ํ™•ํ•œ ์ด๋ฆ„ ์‚ฌ์šฉ

๋ชจ๋“ˆ๊ณผ ๋‚ด๋ณด๋‚ด๋Š” ํ•ญ๋ชฉ์˜ ์ด๋ฆ„์„ ๋ช…ํ™•ํ•˜๊ณ  ์„ค๋ช…์ ์œผ๋กœ ์ง€์œผ์„ธ์š”. ์ด๋Š” ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ  ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์˜ ์ดํ•ด๋ฅผ ๋•์Šต๋‹ˆ๋‹ค.


// ์ข‹์€ ์˜ˆ
import { calculateTotalPrice } from './priceCalculator';

// ๋‚˜์œ ์˜ˆ
import { calc } from './util';
  

3. ์ธ๋ฑ์Šค ํŒŒ์ผ ํ™œ์šฉ

๋ณต์žกํ•œ ๋ชจ๋“ˆ ๊ตฌ์กฐ์—์„œ๋Š” index.ts ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๊ฐœ API๋ฅผ ์ •์˜ํ•˜์„ธ์š”. ์ด๋Š” ๋ชจ๋“ˆ์˜ ์‚ฌ์šฉ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ , ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


// src/components/index.ts
export { Button } from './Button';
export { Input } from './Input';
export { Checkbox } from './Checkbox';

// ์‚ฌ์šฉ
import { Button, Input, Checkbox } from './components';
  

4. ์ˆœํ™˜ ์˜์กด์„ฑ ํ”ผํ•˜๊ธฐ

๋ชจ๋“ˆ ๊ฐ„์˜ ์ˆœํ™˜ ์˜์กด์„ฑ์„ ํ”ผํ•˜์„ธ์š”. ์ด๋Š” ์ฝ”๋“œ์˜ ๋ณต์žก์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฒ„๊ทธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


// ๋‚˜์œ ์˜ˆ
// a.ts
import { funcB } from './b';
export function funcA() { funcB(); }

// b.ts
import { funcA } from './a';
export function funcB() { funcA(); }

// ์ข‹์€ ์˜ˆ: ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๋ณ„๋„์˜ ๋ชจ๋“ˆ๋กœ ๋ถ„๋ฆฌ
// common.ts
export function commonFunc() { /* ... */ }

// a.ts
import { commonFunc } from './common';
export function funcA() { commonFunc(); }

// b.ts
import { commonFunc } from './common';
export function funcB() { commonFunc(); }
  

5. ํƒ€์ž… ์ •์˜ ๋ถ„๋ฆฌ

ํฐ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํƒ€์ž… ์ •์˜๋ฅผ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.


// types.ts
export interface User {
    id: number;
    name: string;
}

// user.ts
import { User } from './types';
export function createUser(name: string): User {
    return { id: Date.now(), name };
}
  

6. ๋ถˆํ•„์š”ํ•œ ์ž„ํฌํŠธ ์ œ๊ฑฐ

์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ž„ํฌํŠธ๋Š” ์ œ๊ฑฐํ•˜์„ธ์š”. ์ด๋Š” ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ IDE์—์„œ ์ด๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

7. ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์ž„ํฌํŠธ ์‚ฌ์šฉ

ํฐ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์ž„ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ด๋Š” ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ  ๋ชจ๋“ˆ ์ด๋™ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.


// tsconfig.json
{
    "compilerOptions": {
        "baseUrl": "src",
        "paths": {
            "@components/*": ["components/*"],
            "@utils/*": ["utils/*"]
        }
    }
}

// ์‚ฌ์šฉ
import { Button } from '@components/Button';
import { formatDate } from '@utils/date';
  

๐Ÿ’ก ํŒ: ์ด๋Ÿฌํ•œ ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค๋ฅผ ๋”ฐ๋ฅด๋ฉด, ๋งˆ์น˜ ์žฌ๋Šฅ๋„ท์—์„œ ํšจ์œจ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ์ž˜ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค ๋‹จ์ผ ์ฑ…์ž„ ๋ช…ํ™•ํ•œ ์ด๋ฆ„ ์ธ๋ฑ์Šค ํŒŒ์ผ ์ˆœํ™˜ ์˜์กด์„ฑ ํ”ผํ•˜๊ธฐ ํƒ€์ž… ์ •์˜ ๋ถ„๋ฆฌ ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค

์ด๋Ÿฌํ•œ ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค๋ฅผ ๋”ฐ๋ฅด๋ฉด, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์กฐ์™€ ํ’ˆ์งˆ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์น˜ ์žฌ๋Šฅ๋„ท์—์„œ ๋‹ค์–‘ํ•œ ์žฌ๋Šฅ์„ ํšจ๊ณผ์ ์œผ๋กœ ์กฐ์งํ•˜๊ณ  ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฝ”๋“œ๋„ ๋”์šฑ ์ฒด๊ณ„์ ์ด๊ณ  ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”! ๐ŸŒŸ

์ด์ œ ์šฐ๋ฆฌ๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ๊นŠ์ด ์žˆ๊ฒŒ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ, ๊ทธ๋ฆฌ๊ณ  ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค๊นŒ์ง€, ์ด ์ง€์‹์„ ํ™œ์šฉํ•˜๋ฉด ๋” ๋‚˜์€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งˆ์น˜ ์žฌ๋Šฅ๋„ท์—์„œ ๋‹ค์–‘ํ•œ ์žฌ๋Šฅ์„ ์ตํžˆ๊ณ  ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ์ด์ œ ์—ฌ๋Ÿฌ๋ถ„๋„ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ์ž์œ ์ž์žฌ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๐ŸŽ‰

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ์„ธ๊ณ„๋Š” ๋„“๊ณ  ๊นŠ์Šต๋‹ˆ๋‹ค. ๊ณ„์†ํ•ด์„œ ํ•™์Šตํ•˜๊ณ  ์‹คํ—˜ํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ๋ถ„๋งŒ์˜ ์ฝ”๋”ฉ ์Šคํƒ€์ผ์„ ๋ฐœ์ „์‹œ์ผœ ๋‚˜๊ฐ€์„ธ์š”. ์žฌ๋Šฅ๋„ท์—์„œ ์ƒˆ๋กœ์šด ์žฌ๋Šฅ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  ๋ฐœ์ „์‹œํ‚ค๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ์„ธ๊ณ„์—์„œ๋„ ๋Š์ž„์—†์ด ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”. ํ™”์ดํŒ…! ๐Ÿ’ช๐Ÿ˜Š