λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
ν”„λ‘ νŠΈμ—”λ“œ/TypeScript

μ œλ„€λ¦­

by alswlfl 2023. 1. 3.

μ œλ„€λ¦­(Generic)

  • ν΄λž˜μŠ€λ‚˜ ν•¨μˆ˜, μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ‹€μ–‘ν•œ νƒ€μž…μœΌλ‘œ μž¬μ‚¬μš© κ°€λŠ₯
  • μ„ μ–Έ ν•  λ•ŒλŠ” νƒ€μž… νŒŒλΌλ―Έν„°λ§Œ μž‘μ„±ν•˜κ³ , μƒμ„±ν•˜λŠ” μ‹œμ μ— μ‚¬μš©ν•˜λŠ” νƒ€μž… κ²°μ •
function getSize(arr:number[] | string[]):number{
  return arr.length;
}

const arr1=[1,2,3];
getSize(arr1);

const arr2=["a","b","c"];
getSize(arr2);
//λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…λ§Œ λ°”κΎΈκ³  λ™μΌν•œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜κ³  μ‹ΆμœΌλ©΄, ν•¨μˆ˜ μ˜€λ²„λ‘œλ“œ λ˜λŠ” μœ λ‹ˆμ˜¨ νƒ€μž… μ‚¬μš©ν•˜κΈ°
//계속 νƒ€μž…μ΄ λˆŒμ–΄λ‚˜λŠ” 경우 μ œλ„€λ¦­ μ‚¬μš©
//<T>μ‚¬μš©: TλŠ” μ–΄λ–€ νƒ€μž…μ„ μ „λ‹¬λ°›μ•„μ„œ ν•΄λ‹Ή ν•¨μˆ˜μ—μ„œ μ‚¬μš© ν•  수 μžˆλ„λ‘ 함
function getSize2<T>(arr:T[]):number{
  return arr.length;
}

const arr3=[1,2,3];
getSize2<number>(arr3);

const arr4=["a","b","c"];
getSize2<string>(arr4);

const arr5=[false,true, true];
getSize2<boolean>(arr5);

μΈν„°νŽ˜μ΄μŠ€μ—μ„œ μ œλ„€λ¦­ μ‚¬μš©ν•˜κΈ°

interface Mobile<T>{
  name: string;
  price:number;
  option: T;
}

const m1:Mobile<{color: string; coupon:boolean}> = {
  name:"s21",
  price:1000,
  option:{
    color: "red",
    coupon:false,
  }
}
const m2:Mobile<string> = {
  name:"s2",
  price:900,
  option:"good",
}