[TypeScript] νƒ€μž…μŠ€ν¬λ¦½νŠΈ ν—·κ°ˆλ¦¬λŠ” κ°œλ… 정리
728x90

Today, What I learned?

νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ΅νžˆλ©΄μ„œ 생각보닀 쉽지 μ•ŠμŒμ„ 많이 λŠλΌλŠ” 쀑..!

특히 ν—·κ°ˆλ¦¬λŠ” λͺ‡λͺ‡ κ°œλ…μ„ μ’€ 정리해보렀 ν•œλ‹€.

 

 

JS와 TS

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λ™μ νƒ€μž…. ν”„λ‘œκ·Έλž¨μ΄ 싀행될 λ•Œ, 즉 λŸ°νƒ€μž„μ— λ³€μˆ˜μ˜ νƒ€μž…μ΄ κ²°μ •λœλ‹€.

λ°˜λŒ€λ‘œ νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” μ •μ νƒ€μž…. 컴파일 νƒ€μž„μ— λ³€μˆ˜μ˜ νƒ€μž…μ΄ κ²°μ •λœλ‹€.

이것은 즉 ν”„λ‘œμ νŠΈκ°€ μ‹€ν–‰λ˜κΈ° 전에 미리 IDEμ—μ„œ λ°œμƒν•  였λ₯˜λ₯Ό μ•Œ 수 μžˆλ‹€λŠ” 것!

 

 

any νƒ€μž…

any νƒ€μž…μ€ λͺ¨λ“  νƒ€μž…μ„ ν¬ν•¨ν•˜λŠ” νƒ€μž…μ΄λ‹€. (μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λͺ¨λ“  λ³€μˆ˜λ„ any νƒ€μž…μ΄λΌκ³  ν•  수 μžˆλ‹€.)

μžλ°”μŠ€ν¬λ¦½νŠΈ ν”„λ‘œμ νŠΈλ₯Ό νƒ€μž…μŠ€ν¬λ¦½νŠΈλ‘œ λ¦¬νŒ©ν† λ§ν•˜λŠ” 경우 μž„μ‹œλ‘œ μ‚¬μš©ν•˜λ©° μ μ§„μ μœΌλ‘œ νƒ€μž…μ„ μ°¨μ°¨ λ°”κΏ”λ‚˜κ°ˆ λ•Œ μœ μš©ν•˜λ‹€.

ν•˜μ§€λ§Œ λͺ¨λ“  νƒ€μž…μ„ ν¬ν•¨ν•œλ‹€κ³  ν•΄μ„œ λ¬΄λΆ„λ³„ν•˜κ²Œ μ‚¬μš©ν•˜λ©΄ νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” μ“°λŠ” μ΄μœ κ°€ μ—†λ‹€!

 

λ˜λ„λ‘μ΄λ©΄ any νƒ€μž…μ„ μ“°λŠ” 것을 ν”Όν•˜λ„λ‘ ν•˜μž!.. πŸ™Œ

μ—¬λ‹΄μœΌλ‘œ μ΄λ²ˆμ— νˆ¬λ‘λ¦¬μŠ€νŠΈλ₯Ό λ¦¬νŒ©ν† λ§ν•˜λ©΄μ„œλ„ any νƒ€μž…μ„ ν•œ λ²ˆλ„ μ‚¬μš©ν•˜μ§€ μ•Šμ•˜λ‹€...!

 

 

 

μ˜΅μ…”λ„ νŒŒλΌλ―Έν„°

νƒ€μž…μ— μ˜΅μ…”λ„ νŒŒλΌλ―Έν„°κ°€ ν¬ν•¨λ˜μ–΄ μžˆλ‹€λ©΄ ν•„μˆ˜μ μΈ 값이 μ•„λ‹ˆλΌλŠ” 의미. 즉 선택적인 νŒŒλΌλ―Έν„°λΌλŠ” 것이닀.

function printText({name, age=15, language}:{name: string; age?:number; language?:string;}){
    // ....
}

printText({name:'abc'}); // 1
printText({age:20, language:'kor'}); // 2

μœ„μ™€ 같은 μ½”λ“œκ°€ μžˆμ„ λ•Œ printText λΌλŠ” ν•¨μˆ˜λŠ” λ§€κ°œλ³€μˆ˜λ‘œ name, age, languageλ₯Ό λ°›κ³ ,
age의 κΈ°λ³Έ 값은 15λ‹€. 이 λ§€κ°œλ³€μˆ˜λ“€μ˜ νƒ€μž…μ„ 보면 age와 langaugeμ—λŠ” μ˜΅μ…”λ„ νŒŒλΌλ―Έν„°κ°€ μΆ”κ°€λ˜μ–΄ μžˆλ‹€.
μ—¬κΈ°μ„œ ν•„μˆ˜μ μœΌλ‘œ λ“€μ–΄κ°€μ•Ό ν•˜λŠ” λ§€κ°œλ³€μˆ˜λŠ” name 뿐인 것을 μ•Œ 수 μžˆλ‹€.

 

κ·Έ μ•„λž˜μ˜ 1번 μ½”λ“œ 같은 κ²½μš°λŠ” μ—λŸ¬κ°€ λ‚˜μ§€ μ•Šμ§€λ§Œ, 2번 μ½”λ“œλŠ” ν•„μˆ˜λ‘œ λ“€μ–΄κ°€μ•Ό ν•˜λŠ” name νŒŒλΌλ―Έν„°κ°€ μ—†κΈ° λ•Œλ¬Έμ— μ—λŸ¬κ°€ λ°œμƒν•  것이닀.

 

 

μ œλ„€λ¦­

μ œλ„€λ¦­μ€ Java, C# λ“±μ˜ μ–Έμ–΄μ—μ„œ μž¬μ‚¬μš©μ„±μ΄ 높은 μ»΄ν¬λ„ŒνŠΈλ₯Ό λ§Œλ“€ λ•Œ 많이 ν™œμš©λ˜λŠ” 문법이닀.
<T> λΌλŠ” κΈ°λ³Έ 문법을 ν†΅ν•΄μ„œ νƒ€μž…μ„ ν•¨μˆ˜μ˜ νŒŒλΌλ―Έν„°μ²˜λŸΌ μ“Έ 수 μžˆλ‹€.

 

function printText<T>(text: T): T {
  console.log(text);
  return text;
}

printText(10); // number
printText('얍'); // string
printText(true); // boolean

μ œλ„€λ¦­μ„ μœ„μ™€ 같은 μ˜ˆμ‹œλ‘œ λ“€ 수 μžˆκ² λ‹€.
ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν–ˆμ„ λ•Œ νƒ€μž…μΆ”λ‘ μ„ ν†΅ν•΄μ„œ νŒŒλΌλ―Έν„°μ— 따라 νƒ€μž…μ„ λ™μ μœΌλ‘œ μ§€μ •ν•΄μ„œ μ“Έ 수 μžˆλ‹€.

10의 경우 printText μ—κ²Œ 10을 인자둜 λ„˜κ²¨μ€ŒμœΌλ‘œμ¨ ν•¨μˆ˜μ—κ²Œ T에 number νƒ€μž…μ„ μ‚¬μš©ν•˜κ² λ‹€κ³  λͺ…μ‹œν•œλ‹€.

 

 

 

 

728x90