Function & Generic

ν•™μŠ΅ ν‚€μ›Œλ“œ

  • ν•¨μˆ˜

  • μ œλ„€λ¦­

Function

ν•¨μˆ˜μ„ μ–Έμ‹

  • λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ„ μ§€μ •ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.

  • ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’ νƒ€μž…μ€ μžλ™μœΌλ‘œ μΆ”λ‘ λ˜κΈ° λ•Œλ¬Έμ— λ‹€μŒκ³Ό 같이 μƒλž΅κ°€λŠ₯ν•˜λ‹€.

function add(x: number, y: number): number {
  return x + y;
}

function minus(x: number, y: number): number {
  return x - y;
}

function multiply(x: number, y: number): number {
  return x * y;
}

ν•¨μˆ˜ν‘œν˜„μ‹

  • ν•¨μˆ˜ 선언식과 λ™μΌν•˜κ²Œ λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ„ μ§€μ •ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.

πŸ€” 그런데 ν•¨μˆ˜ ν‘œν˜„μ‹μ€ μ½”λ“œ 쀑볡인 뢀뢄듀이 μžˆλŠ”λ° μ€„μΌμˆ˜ μ—†μ„κΉŒ? type 별칭과 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•΄μ„œ μ€‘λ³΅λœ μ½”λ“œλ₯Ό 쀄일 수 μžˆλ‹€! κ·Έλž˜μ„œ νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•˜λŠ” 경우, ν•¨μˆ˜ν‘œν˜„μ‹κ³Ό ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό μ„ ν˜Έν•œλ‹€.

μ œλ„€λ¦­

πŸ€” μ œλ„€λ¦­μ΄ ν•„μš”ν•œ 상황

ν•¨μˆ˜μ˜ λ§€κ°œλ³€μ˜ λŒœμ–‘ν•œ νƒ€μž…μ΄ μ§€μ •λ˜μ–΄μ•Ό ν•œλ‹€. κ·Έλ ‡λ‹€λ©΄ κ·Έλ•Œ λ§ˆλ‹€ νƒ€μž…μ„ μΆ”κ°€ν•΄μ£Όμ–΄μ•Ό ν•˜λŠ” κ²ƒμΌκΉŒ? λ§€κ°œλ³€μˆ˜κ°€ κΈΈμ–΄μ§€κ³  였히렀 μ½”λ“œκ°€ λ³΅μž‘ν•΄μ§€λŠ”λ°? κ·Έλ ‡λ‹€λ©΄ any μ§€μ •ν•΄μ•Όν•˜λŠ” 걸까? 그것도 μ•„λ‹ˆλ‹€! κ·Έλž˜μ„œ λ“±μž₯ν•œ κ°œλ…μ΄ μ œλ„€λ¦­ ν•¨μˆ˜μ΄λ‹€.

πŸ₯ μ œλ„€λ¦­ ν•¨μˆ˜

πŸ“– μ œλ„€λ¦­(Generic) : 일반적인 λ˜λŠ” 포괄적인 μ΄λΌλŠ” 뜻

  • 두루두루 λͺ¨λ“  νƒ€μž…μ˜ 값을 λ‹€ μ μš©ν•  μˆ˜λŠ” λ²”μš©μ μΈ ν•¨μˆ˜λ‘œ μ΄ν•΄ν•˜λ©΄ λœλ‹€.

ν•¨μˆ˜ 이름 뒀에 <> 와 T λ₯Ό μ„ μ–Έν•œλ‹€. 그리고 λ§€κ°œλ³€μˆ˜μ™€ λ°˜ν™˜κ°’μ˜ νƒ€μž…μ„ T 둜 μ„€μ •ν•œλ‹€. T 에 μ–΄λ–€ νƒ€μž…μ΄ 할당될 μ§€λŠ” ν•¨μˆ˜κ°€ 호좜될 λ•Œ κ²°μ •λœλ‹€.

func(10) 처럼 Number νƒ€μž…μ˜ 값을 인수둜 μ „λ‹¬ν•˜λ©΄ λ§€κ°œλ³€μˆ˜ value에 Number νƒ€μž…μ˜ 값이 μ €μž₯λ˜λ©΄μ„œ Tκ°€ Number νƒ€μž…μœΌλ‘œ μΆ”λ‘ λœλ‹€. μ΄λ•Œ TλŠ” Number νƒ€μž…μœΌλ‘œ μΆ”λ‘ λ˜κ³ , func ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’ νƒ€μž… λ˜ν•œ Number νƒ€μž…μ΄ λœλ‹€.

좜처 : ν•œμž…ν¬κΈ°λ‘œ μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ ν•Έλ“œλΆ

πŸ‘©πŸ»β€πŸ’» ν•΄λ‹Ή μ½”λ“œλ₯Ό μ œλ„€λ¦­μ„ μ‚¬μš©ν•΄μ„œ μˆ˜μ •ν•΄λ³΄μž

πŸ€ΉπŸ»β€β™€οΈ μ œλ„€λ¦­μ˜ ν™œμš©

πŸ”— μ°Έκ³ 

Last updated