Generics

μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ»΄ν¬λ„ŒνŠΈλ₯Ό ꡬ좕할 수 μžˆλ‹€. μœ μ—°ν•œ κΈ°λŠ₯ 단일 νƒ€μž…μ΄ μ•„λ‹Œ λ‹€μ–‘ν•œ νƒ€μž…μ„ 처리 ν•  수 μžˆλŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό λ§Œλ“ λ‹€.

function indentity(arg: any): any {
  return arg;
}

anyλ₯Ό μ“°λŠ” 경우 νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ•ˆμ“°κ² λ‹€λŠ” λœ»μ΄λž‘ κ°™λ‹€.

νƒ€μž… λ³€μˆ˜(type variable)

function idntity<T>(arg: T): T {
  ruturn arg;
}

identity ν•¨μˆ˜λŠ” λ‹€μ–‘ν•œ νƒ€μž…μ„ μ²˜λ¦¬ν•  수 μžˆλ‹€.

ν•¨μˆ˜ν˜ΈμΆœ 2κ°€μ§€ 방법

let output = identity<string>("myString");
let output = identity("myString");

κΊ½μ‡  κ΄„ν˜Έ(<>)μ•ˆμ— λͺ…μ‹œμ μœΌλ‘œ νƒ€μž…μ„ 전달할 ν•„μš”κ°€ μ—†λ‹€. 인자 myString 을 보고 Tλ₯Ό κ·Έ νƒ€μž…μœΌλ‘œ μ„€μ •ν•œλ‹€.

Generic Type Variables

ν•¨μˆ˜κ°€ TλŒ€μ‹ μ— T배열을 μ²˜λ¦¬ν•œλ‹€λ©΄

function loggingIdentity<T>(arg: T): T {
  console.log(arg.length); // 였λ₯˜: TλŠ” .length λ©”μ†Œλ“œλ₯Ό κ°€μ§€κ³  μžˆμ§€ μ•Šλ‹€.
  return arg;
}

였λ₯˜ 없이 μž‘μ„±ν•˜κΈ°: 2κ°€μ§€ 방법

Generic Types

νƒ€μž… λ§€κ°œλ³€μˆ˜κ°€ λ¨Όμ € λ‚˜μ—΄λœ λΉ„ μ œλ„€λ¦­ ν•¨μˆ˜μ˜ νƒ€μž…

νƒ€μž… λ³€μˆ˜μ˜ μˆ˜μ™€ νƒ€μž… λ³€μˆ˜μ˜ μ‚¬μš©μ΄ μΌμΉ˜ν•˜λ©΄ μ œλ„€λ¦­ νƒ€μž… λ§€κ°œλ³€μˆ˜λ₯Ό λ‹€λ₯Έμ΄λ¦„ μ‚¬μš© κ°€λŠ₯

객체 λ¦¬ν„°λŸ΄ λ°©μ‹μ˜ 호좜 ν˜•μ‹

객체 λ¦¬ν„°λŸ΄ 방식 + interface

μ œλ„€λ¦­ μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ 이동할 수 μžˆλ‹€.

Generic Classes

Generic Constraints

.length ν”„λ‘œνΌν‹°λ₯Ό κ°€μ§„ λͺ¨λ“  νƒ€μž…μ—μ„œ μž‘λ™ν•˜λ„λ‘ μ œν•œμ„ 두고 μ‹Άλ‹€. Tκ°€ 무엇이 될 수 μžˆλŠ”μ§€μ— λŒ€ν•œ μ œμ•½μœΌλ‘œμ„œ μš”κ΅¬ 사항을 μž‘μ„±ν•΄μ•Ό ν•œλ‹€.

interface 와 extends

Using Type Parameters in Generic Constraints

Using Class Types in Generics

μƒμ„±μž ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 클래슀 νƒ€μž…μ„ μ°Έμ‘°ν•œλ‹€.

Last updated

Was this helpful?