generic

리좩녕·2023λ…„ 11μ›” 24일
0

Typescript

λͺ©λ‘ 보기
13/18

πŸ“‹ generic

  • C#, Java λ“±μ˜ μ–Έμ–΄μ—μ„œ μž¬μ‚¬μš©μ„±μ΄ 높은 μ»΄ν¬λ„ŒνŠΈλ₯Ό λ§Œλ“€ λ•Œ 자주 ν™œμš©λœλ‹€.
  • ν•œκ°€μ§€ νƒ€μž…λ³΄λ‹€ μ—¬λŸ¬ 가지 νƒ€μž…μ—μ„œ λ™μž‘ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό μƒμ„±ν•˜λŠ”λ° μ‚¬μš©λœλ‹€.

μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜λŠ” 이유

νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” 기본적으둜 νƒ€μž…μ„ μ§€μ •ν•˜μ—¬ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή νƒ€μž…μ— λ§žμ§€ μ•Šμ„ 경우 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

μœ„μ™€ 같은 ν˜•μ‹μœΌλ‘œ μ‚¬μš©ν•  경우 인자의 νƒ€μž…μ€ 무쑰건 string으둜 μΈμ§€λ˜μ–΄ string μ™Έμ˜ νƒ€μž…μ΄ λ§€κ°œλ³€μˆ˜λ‘œ 올 경우 μ—λŸ¬ λ°œμƒμ„ μ•Œλ €μ€€λ‹€.

그럼 anyλ₯Ό 써야지 λΌλŠ” 생각을 ν•  수 μžˆλŠ”λ° anyλŠ” νƒ€μž… 검사λ₯Ό ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•˜λŠ” μ˜λ―Έκ°€ 없어진닀.

μœ„ λ¬Έμ œμ μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜λŠ” 것이닀.


ν•¨μˆ˜μ—μ„œμ˜ μ œλ„€λ¦­ μ‚¬μš©λ²•

function ts<T>(arr : T[]) : T {
  return arr[0];
}

console.log(ts([10, 20, 30, 40, 50]));
console.log(ts(['a', 'b', 'c', 'd', true]));
console.log(ts(['hello', 'aaa', 1234]));

μœ„ μ½”λ“œλ₯Ό μ‹€ν–‰ν–ˆμ„λ•Œ μ•„λž˜ 이미지와 같은 κ²°κ³Όκ°€ λ‚˜μ˜€κ²Œ λœλ‹€.
ν•¨μˆ˜λͺ… λ°”λ‘œ 뒀에 κΊ½μ‡  κ΄„ν˜Έ μ•ˆμ— TλΌλŠ” μ½”λ“œ μΆ”κ°€ 및 μΈμžμ™€ λ°˜ν™˜κ°’μ— TλΌλŠ” νƒ€μž…μ„ μΆ”κ°€ν–ˆλ‹€. μ΄λ ‡κ²Œ νƒ€μž…μ„ 쀌으둜써 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ νƒ€μž…μŠ€ν¬λ¦½νŠΈκ°€ νƒ€μž…μ„ μΆ”μ •ν•  수 μžˆλŠ” 것이닀.
μ‰½κ²Œ μƒκ°ν•˜λ©΄ μ œλ„€λ¦­μ„ μ‚¬μš©ν•΄ call signature μž‘μ„± μ‹œ νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” μž‘μ„±ν•œ μ œλ„€λ¦­ 이름 λŒ€μ‹  λ°œκ²¬ν•œ νƒ€μž…μœΌλ‘œ λ³€κ²½ν•΄μ€€λ‹€λŠ” 것이닀.

μ•„λž˜ μ΄λ―Έμ§€μ²˜λŸΌ ν•¨μˆ˜μ—μ„œλŠ” μ œλ„€λ¦­ μ„ μ–Έ ν›„ ν•¨μˆ˜ 호좜 μ‹œ λ§€κ°œλ³€μˆ˜ 및 λ°˜ν™˜κ°’μ— λŒ€ν•œ νƒ€μž…μ΄ μƒμ„±λ˜λŠ” 것이닀.


μ—¬λŸ¬κ°œμ˜ μ œλ„€λ¦­ μ‚¬μš© 방법

μ œλ„€λ¦­μ„ μ—¬λ €κ°œ μ‚¬μš©ν•  λ–„λŠ” μΈμžμ— μ–΄λ–€ μ œλ„€λ¦­μ„ μ‚¬μš©ν•  것인지 λͺ…μ‹œν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.
λ‹€λŸ‰μ˜ 데이터가 μžˆλŠ” νƒ€μž…μ΄ μžˆμ„ λ•Œ κ·Έ 데이터 쀑 ν•˜λ‚˜κ°€ λ‹¬λΌμ§ˆ 수 μžˆλŠ” νƒ€μž…μ΄λΌλ©΄ κ·Έ 데이터에 μ œλ„€λ¦­μ„ λ„£μœΌλ©΄ λœλ‹€λŠ” 것이닀.

μ œλ„€λ¦­ κΈ°λ³Έ μ‚¬μš©λ²•κ³Ό λ™μΌν•˜κ²Œ μ„ μ–Έ 및 ν•¨μˆ˜μ— ν•„μš”ν•œ 인자λ₯Ό 뢈러주면 λœλ‹€.

μ΅œμ’… μ •λ¦¬ν•΄λ³΄μžλ©΄ μ œλ„€λ¦­μ€ μ„ μ–Έ μ‹œμ μ΄ μ•„λ‹ˆλΌ 생성 μ‹œμ μ— νƒ€μž…μ„ λͺ…μ‹œν•˜μ—¬ ν•˜λ‚˜μ˜ νƒ€μž…λ§Œμ΄ μ•„λ‹Œ λ‹€μ–‘ν•œ νƒ€μž…μ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” 기법이닀

μ°Έκ³ 

μΊ‘ν‹΄νŒκ΅
λ…Έλ§ˆλ“œμ½”λ”

0개의 λŒ“κΈ€