🎈 νƒ€μž…μΆ”λ‘  νŠΉμ§•

let x = 3;

μœ„μ™€ 같이 x λ³€μˆ˜κ°€ λ”°λ‘œ νƒ€μž…μ„ μ§€μ •ν•˜μ§€ μ•Šλ”λΌλ„ 일단 xλŠ” 3μ΄λΌλŠ” μˆ˜μ‹μ–΄κ°€ λ“€μ–΄μžˆκΈ°μ— number νƒ€μž…μœΌλ‘œ κ°„μ£Όλœλ‹€. μ΄λ ‡κ²Œ λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ±°λ‚˜ μ΄ˆκΈ°ν™” ν•  λ•Œ νƒ€μž…μ΄ μΆ”λ‘ λœλ‹€. 이외에도 λ³€μˆ˜, 속성, 인자의 κΈ°λ³Έκ°’, ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’ 등을 μ„€μ •ν•  λ•Œ νƒ€μž… 좔둠이 μΌμ–΄λ‚œλ‹€.

var a = 'abc';

function getB(b = 10) {
  var c = 'hi';
  return b + c;
}

λ³€μˆ˜ C의 속성은 'hi' λΌλŠ” λ¬Έμžμ—΄μ΄ λ“€μ–΄μžˆμ–΄ νƒ€μž…μ΄ μ•Œμ•„μ„œ string λ¬Έμžμ—΄λ‘œ μžλ™ μΆ”λ‘ λœλ‹€.

그리고 λ°˜ν™˜κ°’μ€ b + c 인 경우

b: number, c:string

으둜 κ°„μ£Όλ˜μ–΄ 좜λ ₯λ˜λŠ” 값은 //10hi 둜 좜λ ₯λœλ‹€. 그리고 getB νŒŒλΌλ―Έν„°μ— νƒ€μž…μ„ μ •μ˜λ˜μ§€ μ•Šμ€ 채 b만 μ •μ˜κ°€ 될 경우 μ•Œμ•„μ„œ anyλΌλŠ” νƒ€μž…μœΌλ‘œ μ •μ˜ν•΄μ€€λ‹€.

 

🎈 νƒ€μž…μΆ”λ‘  κΈ°λ³Έ 예제 02

interface Dropdown<T> {
  value: T;
  title: string;
}

var shoppingItem: Dropdown<string> = {
  value: 'abc',
  title: 'hello',
}

μΈν„°νŽ˜μ΄μŠ€μ™€ μ œλ„ˆλ¦­μ„ μ΄μš©ν•œ νƒ€μž… μΆ”λ‘  방식이닀. T에 λ”°λΌμ„œ value값이 λ³€κ²½ 될 μˆ˜λ„ μžˆλ‹€. titleμ΄λž€ 속성값은 string으둜 κ³ μ •μ‹œμΌœ λ†“μ•˜μœΌλ‹ˆ κ·Έ νƒ€μž… κ³ λŒ€λ‘œ Fix 된 것. 그리고 λ‹€λ₯Έ ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄μ„œ λ³€μˆ˜λ₯Ό μ΄ˆκΈ°ν™” ν•˜λ©΄ νƒ€μž…λ„ μ΄ˆκΈ°ν™” λœλ‹€. μœ„ μ½”λ“œμ²˜λŸΌ value값에 'abc'λ₯Ό λ„£μœΌλ©΄ μžλ™μœΌλ‘œ λ¬Έμžμ—΄λ‘œ λ³€λ™λ˜κ³  숫자λ₯Ό λ„£μœΌλ©΄ μžλ™μœΌλ‘œ number νƒ€μž…μœΌλ‘œ λ³€λ™λœλ‹€.

 

🎈 νƒ€μž…μΆ”λ‘  κΈ°λ³Έ 예제 03 : λ³΅μž‘ν•œ κ΅¬μ‘°μ—μ„œμ˜ νƒ€μž… μΆ”λ‘  방식

interface Dropdown<T> {
  value: T;
  title: string;
}

interface DetailedDropdown<K> extends Dropdown<K> {
  description: string;
  tag: K;
}

var DetailedItem: DetailedDropdown<string> = {
  title: 'hello',
  description: 'ab',
  value: 'a',
  tag: 'a'
}

μ²˜μŒμ—λŠ” μΈν„°νŽ˜μ΄μŠ€λ‘œ μ œλ„ˆλ¦­μ„ μ„ μ–Έν•΄μ£Όκ³  value값도 T μ œλ„ˆλ¦­ ν˜•νƒœλ‘œ νƒ€μž…μ •μ˜. 그리고 또 λ‹€λ₯Έ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ„ μ–Έν•  λ•ŒλŠ” Dopdown μΈν„°νŽ˜μ΄μŠ€λ₯Ό extends(ν™•μž₯) ν‚€μ›Œλ“œλ₯Ό μ¨μ„œ 데렀였면 ꡳ이 μ„ μ–Έν•˜μ§€ μ•Šμ•„λ„ μ•”λ¬΅μ μœΌλ‘œ Dropdown에 μžˆλŠ” 속성듀이 λ“€μ–΄μ™€μžˆλ‹€. (value, title) 그리고 μƒˆλ‘œμš΄ DetailedItem ν•¨μˆ˜λ₯Ό 생성할 λ•Œ DetailedDropdown을 κ°€μ Έμ˜΄κ³Ό λ™μ‹œμ— μ¦‰μ‹œ νƒ€μž…μ„ μ§€μ •ν•΄μ£Όλ©΄ μœ„μ— μžˆλŠ” μΈν„°νŽ˜μ΄μŠ€λ“€ value값듀이 μžλ™μœΌλ‘œ string으둜 λ³€λ™λœλ‹€. 그리고 DetailedItem λ³€μˆ˜μ— λ‹΄κΈ΄ 속성듀은 λ¬Έμžμ—΄λ‘œ λ‚˜μ—΄ν•΄μ£Όμ–΄μ•Ό μ—λŸ¬λ₯Ό λ°©μ§€ν•  수 μžˆλ‹€.

 

🎈 κ°€μž₯ μ μ ˆν•œ νƒ€μž…

νƒ€μž…μ€ 보톡 λͺ‡ 개의 ν‘œν˜„μ‹μ„ λ°”νƒ•μœΌλ‘œ νƒ€μž…μ„ μΆ”λ‘ ν•œλ‹€. 그리고 κ·Έ ν‘œν˜„μ‹μ„ μ΄μš©ν•˜μ—¬ κ°€μž₯ κ·Όμ ‘ν•œ νƒ€μž…μ„ μΆ”λ‘ ν•˜κ²Œ λ˜λŠ”λ° 이 κ°€μž₯ κ·Όμ ‘ν•œ νƒ€μž…μ„ Best Common Type이라고 ν•œλ‹€.

  • 예제
let arr = [0, 1, null];

배열에 λ“€μ–΄κ°€λŠ” 값듀이 ν•œ νƒ€μž…μœΌλ‘œ ν†΅μΌλ˜μ§€ μ•Šμ•˜λ‹€. 2κ°œλŠ” μˆ«μžν˜•, 1κ°œλŠ” λ…Όλ¦¬ν˜•μœΌλ‘œ λ“€μ–΄κ°€μžˆλŠ”λ° μœ„ μ½”λ“œμ²˜λŸΌ μ„ μ–Έ ν›„ arr λ³€μˆ˜ μœ„μ— 마우슀 μ»€μ„œλ₯Ό 올렀 λ†“μœΌλ©΄ number | boolean κ°’μœΌλ‘œ μ•Œμ•„μ„œ μœ λ‹ˆμ˜¨ λ°©μ‹μœΌλ‘œ μΆ”λ‘ ν•΄μ€€λ‹€.

+ Recent posts