[TypeScript] νƒ€μž…μŠ€ν¬λ¦½νŠΈλž€? / 데이터 νƒ€μž…

πŸ€” νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” μ™œ ν•„μš”ν• κΉŒ?

  • μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œμ˜ μŠ€μΌ€μΌμ΄ 컀지면, λ„ˆλ¬΄ μ§€μ €λΆ„ν•˜κ³  μ½”λ“œ 관리가 λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•˜λ©΄ 쒋은 점

  • μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ°˜λ³΄λ‹€ 버그λ₯Ό 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μœ μ§€λ³΄μˆ˜κ°€ μ‰½μŠ΅λ‹ˆλ‹€.
  • κ°•λ ₯ν•œ 높은 ν€„λ¦¬ν‹°μ˜ μ½”λ“œλ₯Ό 생산할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

νƒ€μž…μŠ€ν¬λ¦½νŠΈ = μžλ°”μŠ€ν¬λ¦½νŠΈ + νƒ€μž…μ²΄ν¬

  • νƒ€μž…μŠ€ν¬λ¦½νŠΈ ν™˜κ²½ -> μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ½”λ”© κ°€λŠ₯, λ°˜λŒ€λŠ” λ™μž‘ν•˜μ§€ μ•Šμ•„μš”.
//a, b λ§μ…ˆν•˜κ³  결과물을 리턴 ν•¨μˆ˜
//μžλ°”μŠ€ν¬λ¦½νŠΈ 

function plus(a,b) {
	return a + b;
}

console.log(plus(3,5)); // >> 8

console.log(plus('3', '5')); // >> 35 였λ₯˜λŠ” μ•„λ‹ˆμ§€λ§Œ, λͺ¨ν˜Έν•΄μ§

 

//νƒ€μž…μŠ€ν¬λ¦½νŠΈ

function plus(a : number, b: number){
	return a + b;
}

console.log(plus(3,5)) // > 8

console.log(plus('3','5')) // > 였λ₯˜! : νƒ€μž…μ— λ§žμ§€ μ•Šμ€ 데이터λ₯Ό λ„£μŒ

 

πŸ€” 데이터 νƒ€μž…μ„ ν‘œκΈ°ν•˜λ©΄ 쒋은 점?

-> μ½”λ“œ μ‹€ν–‰ μ „, 컴파일 νƒ€μž„ μ‹œ 였λ₯˜λ₯Ό 미리 체크할 수 μžˆμŠ΅λ‹ˆλ‹€. 

 

TS -- 컴파일 λ²ˆμ—­ --> JS -- 해석 κ°€λŠ₯--> μ›ΉλΈŒλΌμš°μ €

 

데이터 νƒ€μž…

  • νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” λ‹€μ–‘ν•œ 데이터 νƒ€μž…μ„ μ§€μ›ν•©λ‹ˆλ‹€.
  • κΈ°λ³Έ 데이터 νƒ€μž…
    • number : μˆ«μž νƒ€μž…μœΌλ‘œ, μ •μˆ˜μ™€ μ‹€μˆ˜λ₯Ό 포함
    • string : λ¬Έμžμ—΄ νƒ€μž…
    • boolean : μ°Έ, 거짓을 λ‚˜νƒ€λ‚΄λŠ” λΆˆλ¦¬μ–Έ νƒ€μž…
    • null : κ°’이 μ—†μŒμ„ λ‚˜νƒ€λ‚΄λŠ” νƒ€μž… (λŠ₯동적)
    • undefined : κ°’이 ν• λ‹Ήλ˜μ§€ μ•ŠλŠ” λ³€μˆ˜μ˜ 기본값인 νƒ€μž… (μˆ˜λ™μ ) 
  • 객체 νƒ€μž…
    • object : κ°μ²΄λ₯Ό λ‚˜νƒ€λ‚΄λŠ” νƒ€μž…
    • array : λ™μΌν•œ νƒ€μž…μ˜ μš”μ†Œλ₯Ό κ°€μ§„ 배열을 λ‚˜νƒ€λ‚΄λŠ” νƒ€μž…
    • tuple : κ° μš”μ†Œκ°€ λ‹€λ₯Έ νƒ€μž…μ„ κ°€μ§ˆ 수 μžˆλŠ” 배열을 λ‚˜νƒ€λ‚΄λŠ” νƒ€μž… (파이썬의 νŠœν”Œκ³Ό κ°œλ… 닀름)
  • 특수 νƒ€μž…
    • any : μ–΄λ– ν•œ νƒ€μž…μ΄λ“  할당될 수 μžˆλŠ” νƒ€μž… <- νƒ€μž…μ΄ λͺ¨ν˜Έν•œ κ²½μš°μ— μž„μ‹œλ‘œ μ‚¬μš©
    • unknown : νƒ€μž…을 미리 μ•Œ 수 μ—†λŠ” 경우 μ‚¬μš©λ˜λŠ” νƒ€μž…  

 

νƒ€μž… μΆ”λ‘ (Type Inference) κΈ°λŠ₯

  • νƒ€μž…μŠ€ν¬λ¦½νŠΈ νƒ€μž… μΆ”λ‘  κΈ°λŠ₯을 톡해 λ³€μˆ˜μ˜ νƒ€μž…μ„ μžλ™μœΌλ‘œ νŒλ‹¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 
  • νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ»΄νŒŒμΌλŸ¬κ°€ μ΄ˆκΈ°μ— ν• λ‹Ήλœ 값을 λ°”νƒ•μœΌλ‘œ λ³€μˆ˜μ˜ νƒ€μž…μ„ μΆ”λ‘ ν•©λ‹ˆλ‹€. 
  • μ΄λŠ” μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ μž‘μ„±ν•  수 μžˆλ„λ‘ λ„μ™€μ£Όμ§€λ§Œ, νƒ€μž…μ„ λͺ…μ‹œμ μœΌλ‘œ μ§€μ •ν•˜λŠ” 것이 더 λͺ…ν™•ν•©λ‹ˆλ‹€.

-> νƒ€μž… 좔둠이 λͺ¨ν˜Έν•œ κ²½μš°λ‚˜, λ³΅μž‘ν•œ λ‘œμ§μ—μ„œλŠ” νƒ€μž…μ„ λͺ…μ‹œν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

 

νƒ€μž… λͺ…μ‹œ

: λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ λ³€μˆ˜ κ°’μ˜ νƒ€μž…μ„ λͺ…μ‹œν•¨μœΌλ‘œμ¨ λ³€μˆ˜μ˜ 데이터 νƒ€μž…μ„ μ§€μ •ν•©λ‹ˆλ‹€. νƒ€μž… 좔둠보닀 더 λͺ…ν™•ν•˜κ³  μ •ν™•ν•˜κ²Œ 값을 받을 수 μžˆμŠ΅λ‹ˆλ‹€. 

let x : string = "λ‚˜λŠ” λ¬Έμžμ—΄μ΄λ‹€";
//ν•¨μˆ˜μ˜ 데이터 νƒ€μž… λͺ…μ‹œ(λ§€κ°œλ³€μˆ˜, λ¦¬ν„΄νƒ€μž…)
function Plus(a : number, b : number) : number{
    return a + b;
}

ν•¨μˆ˜μ— λ§€κ°œλ³€μˆ˜κ°€ number, number일 λ•Œλ§Œ 였λ₯˜ 없이 이 ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•  수 μžˆκΈ°λ•Œλ¬Έμ— 더 λͺ…ν™•ν•˜κ²Œ λŠκ»΄μ§‘λ‹ˆλ‹€.