Frontend 개발자 - hyo.loui

νƒ€μž…μŠ€ν¬λ¦½νŠΈ - νƒ€μž… μΆ”λ‘ (Type Inference) λ³Έλ¬Έ

Typescript

νƒ€μž…μŠ€ν¬λ¦½νŠΈ - νƒ€μž… μΆ”λ‘ (Type Inference)

hyo.loui 2023. 1. 20. 21:32

🎯λͺ©μ  :

TS  νƒ€μž… μΆ”λ‘ (Type Inference), 정리 및 볡슡

 


1. νƒ€μž…μΆ”λ‘  μ΄λž€?

μ •μ νƒ€μž… μ–Έμ–΄λ₯Ό μ‚¬μš©ν•  λ•Œ 단점은 νƒ€μž…μ„ μ •μ˜ν•˜λŠ”λ°

μ‹œκ°„κ³Ό λ…Έλ ₯이 많이 ν•„μš”ν•΄μ„œ 생산성이 μ €ν•˜λ  수 μžˆλ‹€.

 

TS의 경우 λ‹€μ–‘ν•œ κ²½μš°μ— λŒ€ν•΄ νƒ€μž…μΆ”λ‘ μ„ μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— κΌ­ ν•„μš”ν•œ κ²½μš°μ—λ§Œ νƒ€μž…μ„ μ •μ˜ν•  수 μžˆλ‹€.

// Type Inference

let abc = "abc"; // string
let number = 2; // number

// abc = 123; // Error
// number = "abcd"; // Error

const n1 = 123; // string
const n2 = "123"; // number

const array2 = [1, 2, 3]; // Array
const [x1, x2, x3] = array2; // Array
// array2.push('a'); // Error

const obj = { numId: 1, stringId: "1" };
const { numId, stringId } = obj;
console.log("πŸ‘‰πŸ‘‰  obj", numId === stringId); // Error

 

 


2.  ν•¨μˆ˜μ˜ νƒ€μž…μΆ”λ‘ 

ν•¨μˆ˜μ—μ„œλŠ” νŒŒλΌλ―Έν„°μ™€, ν•¨μˆ˜μ˜ νƒ€μž…λ„ 좔둠이 κ°€λŠ₯ν•˜λ‹€

 

// ν•¨μˆ˜μ˜ νƒ€μž… μΆ”λ‘ 
const func1 = (a = 1, b = "b") => {
  return `${a}, ${b}`;
};
// const test_ = func1(3, 5); // Error νƒ€μž…μΆ”λ‘ μœΌλ‘œ νŒŒλΌλ―Έν„° b의 νƒ€μž…μ€ string 이기 λ•Œλ¬Έ.
// const test_2: number = func1(3, 5); // Error νƒ€μž…μΆ”λ‘ μœΌλ‘œ string을 returnν•˜κΈ° λ•Œλ¬Έ.

//    vv μ—¬κΈ°μ„œ return 값이 number | string 을 μΆ”λ‘  ν•˜κ³ μžˆμŒ.
const func2 = (value: number) => {
  if (value < 10) {
    return value;
  } else {
    return `${value} is big`;
  }
};

const teste1 = func2(9);
console.log("πŸ‘‰πŸ‘‰  teste1", teste1);

const teste2 = func2(11);
// const teste2 = func2("11"); // Error νŒŒλΌλ―Έν„°μ—μ„œ λ°›λŠ” 값이 number이기 λ•Œλ¬Έμ— μ—λŸ¬ 발

λ‹€λ§Œ ν•¨μˆ˜μ— defaultλ₯Ό μ§€μ •ν–ˆμ„ 경우,

 

νƒ€μž…μ΄ μ§€μ •λœ κ²ƒμœΌλ‘œ κ°„μ£Όν•΄ λ‹€λ₯Έ νƒ€μž…μ˜ 데이터가 λ“€μ–΄μ˜€λ©΄

μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚¨λ‹€.

 


 

 μ΅œμ’… 정리 

  1. νƒ€μž…μΆ”λ‘ μ€ νƒ€μž…μŠ€ν¬λ¦½νŠΈκ°€ μ½”λ“œλ₯Ό ν•΄μ„ν•΄λ‚˜κ°€λŠ” λ™μž‘μ„ 의미
  2. νƒ€μž…μ„ μ •μ˜ν•˜λŠ”λ° μ‹œκ°„κ³Ό λ…Έλ ₯이 많이 ν•„μš”ν•΄μ„œ μƒμ‚°μ„±μ΄ μ €ν•˜
  3. λ‹€μ–‘ν•œ κ²½μš°μ— λŒ€ν•΄ νƒ€μž…μΆ”λ‘ μ„ μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— ν•„μš”ν•œ κ²½μš°μ—λ§Œ νƒ€μž…μ„ μ •μ˜ν•  수 μžˆλ‹€.