TypeScript | Why TypeScriptโ“

๊ถŒ๊ธฐํ˜„ยท2021๋…„ 2์›” 4์ผ
0

TypeScript

๋ชฉ๋ก ๋ณด๊ธฐ
1/3
post-thumbnail

๐Ÿค”Why TypeScript โ“

ํšŒ์‚ฌ๋“ค์˜ ์ฑ„์šฉ๊ณต๊ณ ์— ๊ผญ ๋“ฑ์žฅํ•˜๊ณ  ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” TypeScript..!!
JavaScript์˜ superset์ด๋ผ๋Š”๋ฐ ์–ด๋–ค ์ฐจ๋ณ„์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ์— ์ด๋ ‡๊ฒŒ ํ•ซํ•œ์ง€ ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ฒจ์„œ ํฌ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค.

TypeScript ํŠน์ง•

  • Microsoft์—์„œ ๋ฐœํ‘œํ•œ JavaScript๊ธฐ๋ฐ˜ ์˜คํ”ˆ์†Œ์Šค
  • JavaScript ์ •์  ํƒ€์ดํ•‘์„ ์ถ”๊ฐ€ํ•œ JavaScript์˜ Superset(์ƒ์œ„ํ™•์žฅ)
  • ์ปดํŒŒ์ผ ์–ธ์–ด, ์ •์  ํƒ€์ž… ์–ธ์–ด
  • JavaScript๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๋ชจ๋“  ๊ณณ( client-side || server-side )์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋‚ฎ์€ ๋ฒ„์ „์˜ ECMA ์ˆ˜์šฉ

TypeScript๊ฐ€ ํ•ซ(?)ํ•œ ์ด์œ ๋กœ๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • 1. Type
  • 2. OOP(๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ)

1. Type...

TypeScript = JavaScript + type

1-1. ํƒ€์ž… ์•ˆ์ •์„ฑ โ†‘, ์†๋„ โ†‘

Compile time์— type์„ ๊ฒฐ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„โ†‘ , ํƒ€์ž…์—๋Ÿฌ๋กœ ์ธํ•œ ๋ฌธ์ œ์ ์„ ์ดˆ๊ธฐ์— ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์–ด ํƒ€์ž…์˜ ์•ˆ์ •์„ฑโ†‘

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

๋ฐ˜๋ฉด, TypeScript ๋Š” JavaScript์— type์„ ๋”ํ•˜์—ฌ ์œ„์˜ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜์˜€๋‹ค. ์ •์  ํƒ€์ž… ์–ธ์–ด๋กœ ํƒ€์ž…์„ ์ปดํŒŒ์ผ ์‹œ์— ๊ฒฐ์ • ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐœ๋ฐœ ์ค‘์— ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋ฅผ ํ†ตํ•ด ์ฆ‰๊ฐ์ ์œผ๋กœ type-checking errors ๋ฅผ ๋ฐ›์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Š”, TypeScript ์˜ ํƒ€์ž… ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ๊ตฌํ˜„ํ•˜๋ฉด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ปดํŒŒ์ผ๋Ÿฌ(TSC) ๋Š” ๋ฌธ์ œ์˜ ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์นœ์ ˆํ•˜๊ฒŒ ์•Œ๋ ค์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜์˜ ์›์ธ์„ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋•๋ถ„์— ์•ˆ์ •์ ์ด๊ณ  ํ™•์žฅ๊ฐ€๋Šฅํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ป Transpile : TS โ‡จ JS: (feat. tsc(ts compiler) & babel)

์—ฌ๊ธฐ์„œ Transpile์ด๋ž€, ์–ด๋–ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๋œ ์†Œ์Šค์ฝ”๋“œ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ๋Š” ํ…์ŠคํŠธ๋กœ ๋œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” Compile๊ณผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๊ธด ์šฉ์–ด์ด๋‹ค.

CompileTranspile
์†Œ์Šค์ฝ”๋“œ โ‡จ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ์†Œ์Šค์ฝ”๋“œ(๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด)

TypeScript ์ฝ”๋“œ๋Š” tsc(ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ปดํŒŒ์ผ๋Ÿฌ)๋‚˜ babel์„ ํ†ตํ•ด์„œ JavaScript์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ๋•๋ถ„์— JS Runtime ํ™˜๊ฒฝ์ด ์กด์žฌํ•˜๋Š” ์–ด๋–ค ๊ณณ์—์„œ๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ… TS๋Š” JS Runtime ๋™์ž‘ํ•˜๋Š” ๊ณณ์—์„œ ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ๊ผญ TransCompiler๋ฅผ ํ†ตํ•ด JS๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

1-2. ํƒ€์ž…์— ๋Œ€ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์„ค์ • ๋ถˆํ•„์š”

1-1์—์„œ ๋ณธ๋“ฏ์ด JavaScript๋Š” Runtime๋•Œ ํƒ€์ž…์ด ๊ฒฐ์ • ๋˜๊ณ  ๋•Œ๋ฌธ์— ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ์˜ ์œ„ํ—˜์— ๋…ธ์ถœ๋˜์–ด์žˆ๋‹ค. ๋•Œ๋ฌธ์— JS์—์„œ๋Š” ์‚ฌ์šฉ์ž์˜ input์— ๋”ฐ๋ผ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ TS์—์„œ๋Š” ๋ฏธ๋ฆฌ ํƒ€์ž…์„ ์ง€์ •ํ•˜๊ณ , compile time์—์„œ ํ™•์ธํ•˜๋ฏ€๋กœ ํƒ€์ž…์— ๋Œ€ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

1-3. ๊ฐ€๋…์„ฑ โ†‘

JavaScript ๋Š” ์ฝ”๋“œ์—์„œ๋Š” type์ด ๋ช…์‹œ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.
๋ฐ˜๋ฉด, TypeScript ๋Š” ๊ฐ์ฒด์˜ ํ˜•ํƒœ๋ฅผ ๋ช…์‹œ, ๋ณ€์ˆ˜์˜ type๋ช…์‹œ, ํ•จ์ˆ˜๋ผ๋ฉด ์ธ์ž์™€ ๋ฆฌํ„ด๊ฐ’์˜ ๋ช…์‹œ๋ฅผ ํ†ตํ•ด์„œ ๋” ๋‚˜์€ ๊ฐ€๋…์„ฑ์„ ๋ณด์žฅ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ๋˜ ๊ฐ€๋…์„ฑ์„ ํ†ตํ•ด ์•ˆ์ •์„ฑ ๋˜ํ•œ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ”๏ธ ์˜ˆ์‹œ

  // JavaScript 
  function jsSum(num1, num2) {
    return num1 + num2;
  }
  // TypeScript โœจ
  function sum(num1: number, num2: number): number {
    return num1 + num2;
  }

JS๋กœ ์ž‘์„ฑํ•œ jsSum ์ด๋ผ๋Š” ํ•จ์ˆ˜๋Š” num1,2์ด๋ผ๋Š” ์ˆซ์ž๋ฅผ ๋”ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ•˜๋ฉด ์ข‹๊ฒ ์ง€๋งŒ, ์•„๋ฌด ํƒ€์ž…์ด๋‚˜ ๋‹ค ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Runtime Error๋‚˜ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— string์„ ๋„ฃ์œผ๋ฉด ๋ฌธ์ž์—ด์„ ์ด์–ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ํ•ด์„œ ์›๋ž˜์˜ ๋ชฉ์ ์„ ์žƒ์„ ์ˆ˜ ์žˆ๋‹ค.

TS ์ฝ”๋“œ๋Š” ์ •ํ™•ํžˆ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š”์ง€ ์–ด๋–ค ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š”์ง€ ๋ช…์‹œํ•ด์ฃผ์–ด์„œ ์•ˆ์ •์„ฑ โ†‘ + ๊ฐ€๋…์„ฑ โ†‘


2. ๊ฐ•๋ ฅํ•œ OOP ์ง€์›

Object-Oriented Programming์˜ ์•ฝ์ž๋กœ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋œปํ•˜๊ณ  ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋ช…๋ น์–ด์˜ ๋ชฉ๋ก์œผ๋กœ ๋ณด๋Š” ์‹œ๊ฐ์—์„œ ๋ฒ—์–ด๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ๋œ ๋‹จ์œ„, ์ฆ‰ "๊ฐ์ฒด"๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด์™€ ๊ฐ™์ด FP(ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ)์ด ์ž์ฃผ ์–ธ๊ธ‰๋˜๋Š”๋ฐ ํ›„์— ์ •๋ฆฌํ•ด๋ณผ ์˜ˆ์ •์ด๋‹ค.

์ง€๊ธˆ์˜ ๋‚ด๊ฐ€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ์™„๋ฒฝํžˆ ์ดํ•ดํ•˜๊ณ  ์ด ๊ธ€์„ ์ž‘์„ฑํ•˜์ง€๋Š” ๋ชปํ•˜์ง€๋งŒ TS๋ฅผ ํ†ตํ•ด JS๋ณด๋‹ค ๋” ๋‚˜์€ OOP๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค. 

๊ฐ„๋‹จํ•˜๊ฒŒ OOP์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด์ž

OOP์˜ ํŠน์ง• 4๊ฐ€์ง€

  • ๋ชจ๋“ˆํ™” : ๊ฐ์ฒด๋ฅผ ์œ„์ฃผ๋กœ ๋ชจ๋“ˆ์„ฑ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์žฌ์‚ฌ์šฉ์„ฑ : ๋ชจ๋“ˆ๋ณ„๋กœ ์›ํ•˜๋Š” ๊ฒƒ์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ™•์žฅ์„ฑ : ๊ฐ์ฒด ๋‹จ์œ„๋กœ ํ™•์žฅํ•ด๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์œ ์ง€๋ณด์ˆ˜์„ฑ : ์œ„์˜ ํŠน์ง•์œผ๋กœ ๊ธฐ์กด ์ฝ”๋“œ์˜ ์ด์Šˆํ•ด๊ฒฐ / ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋ฅผ ์‰ฝ๊ฒŒ / ๋•๋ถ„์— ํ˜‘์—… โ†‘

OOP์— ๋”ฐ๋ผ ์ฝ”๋”ฉํ–ˆ์„๋•Œ์˜ ์žฅ์ 

  • ์ƒ์‚ฐ์„ฑ โ†‘
  • ์ฝ”๋“œ ํ€„๋ฆฌํ‹ฐ โ†‘
  • ์ œํ’ˆ ๊ฐœ๋ฐœ ์†๋„ โ†‘

๋ฌผ๋ก  ์žฅ์ ๋งŒ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ  ์ผ๋ถ€ ๋ฌธ์ œ๋กœ ์ธํ•ด FP๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๊ณ  ํ•œ๋‹ค,
๋ฌดํŠผ! OOP์—๋Š” ์ด๋Ÿฐ ์žฅ์ ๋“ค๊ณผ ํŠน์ง•์ด ์žˆ๊ณ  JS์—์„œ๋„ ์–ด๋Š์ •๋„ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, TS๋กœ ์ธํ•ด์„œ ๋‹ค๋ฅธ Class๋ฅผ ๋ฒ ์ด์Šค๋กœ ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ๋ญ๋ผ ์„ค๋ช…ํ•ด์•ผํ• ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ... ๊ทธ๋ƒฅ OOP์—์„œ ๋” Coolํ•œ OOP....;;;

๊ฐ•๋ ฅํ•œ OOP...

JS๋„ ์—„๋ฐ€ํžˆ ๋งํ•˜์ž๋ฉด "Prototype"์„ ๋ฒ ์ด์Šค๋กœ OOP๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

contstructor function ์„ ์ด์šฉํ•˜์—ฌ class ๋ฅผ ์‚ฌ์šฉํ•ด์„œ Object๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๊ฐ„ํŽธํ•˜๊ฒŒ Object๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.
ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ™•์‹คํ•œ(?) OOP๋ฅผ ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค๊ณ  ํ•œ๋‹ค.
๋˜, ES6์—์„œ "class"๋ผ๋Š” ๊ฒƒ์ด ๋„์ž…๋˜์—ˆ์ง€๋งŒ, ์ด๊ฒƒ ๋˜ํ•œ "prototype"์„ ๋ฒ ์ด์Šค๋กœ ํ•˜๊ณ  ์žˆ์–ด์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๋งŽ์ด ์—†๋‹ค๊ณ  ํ•œ๋‹ค.

(OOP๋„ ์ž˜ ๋ชจ๋ฅด๋Š”๋ฐ ๋ญ˜ ์“ฐ๊ณ  ์žˆ๋Š”๊ฑด์ง€...๊ผญ ์ •๋ฆฌํ•ด์•ผ์ง€..)

๋ฐ˜๋ฉด, TypeScript๋Š” "class", "interface", "generic"๋“ฑ ์„ ํ™œ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ Class๋ฅผ ๋ฒ ์ด์Šค๋กœํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ฒ˜๋Ÿผ ๊ฐ•๋ ฅํ•œ OOP๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.


์œ„์˜ ๊ฐ€์žฅ ์ฃผ์š”ํ•œ ์žฅ์  ์™ธ์—๋„

  • ES5 / ES6 / ES NEXT ์ง€์› => ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ
  • JS ํ”„๋กœ์ ํŠธ์— ์ ์ง„์ ์œผ๋กœ TS๋ฅผ ์ ์šฉ๊ฐ€๋Šฅ

๋“ฑ์˜ ์—ฌ๋Ÿฌ ์žฅ์ ๋“ค์ด ๋” ๋งŽ๋‹ค!

๊ฒฐ๋ก  โ€ผ๏ธ

TypeScript๋Š” ์“ฐ์ง€ ์•Š์„ ์ด์œ ๊ฐ€ ์—†๋‹ค!

์ฐธ๊ณ ์ž๋ฃŒ | TypeScript ๊ณต์‹๋ฌธ์„œ
์ฐธ๊ณ ์ž๋ฃŒ | Junho's Dev Wiki
์ฐธ๊ณ ์ž๋ฃŒ | TypeScript ํ•˜๊ธฐ ์ „์— ์ด์ •๋„๋Š” ์•Œ์•„์•ผ์ง€!

profile
ํ•จ๊ป˜ ์ผํ•˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž๋ฅผ ๋ชฉํ‘œ๋กœ ๋งค์ผ์„ ๋…ธ๋ ฅํ•˜๊ณ , ์˜ท์„ ์ข‹์•„ํ•˜๋Š” ๊ถŒ๊ธฐํ˜„ ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€