관리 메뉴

Bin's Blog

였늘의 TypeScript 본문

TypeScript

였늘의 TypeScript

hotIce 2023. 7. 16. 09:11
728x90

πŸ€” Literal Types 

πŸ‘‰ νŠΉμ • κΈ€μžλ‚˜ 숫자만 κ°€μ§ˆ 수 있게 μ œν•œμ„ λ‘λŠ” νƒ€μž…을 literal type 이라고 λΆ€λ₯Έλ‹€.

πŸ‘‰ μ˜ˆμ‹œ

let 이름 : "kim"

 

πŸ‘‰ μ΄λ ‡κ²Œ ν•˜λ©΄ μ΄λ¦„μ΄λΌλŠ” λ³€μˆ˜μ—λŠ” 무쑰건 kimμ΄λΌλŠ” κΈ€μžλ§Œ λ“€μ–΄μ˜¬ 수 μžˆλ‹€. 

πŸ‘‰ type이 μžλ™μœΌλ‘œ μ™„μ„±λœλ‹€. 

 

πŸ‘‰ literal type은 const λ³€μˆ˜μ˜ μ—…κ·Έλ ˆμ΄λ“œ 버젼이라고 보면 λ˜λŠ”λ° const λ³€μˆ˜λŠ” 값을 λ°”κΏ€ 수 μ—†λŠ” λ³€μˆ˜λ‹€. 

πŸ‘‰ κ·Έλž˜μ„œ λ³€ν•˜λŠ” μ€‘μš”ν•œ 정보λ₯Ό μ €μž₯ν•˜κ³  싢을 땐 constκ°€ 무쓸λͺ¨λ‹€. 예λ₯Ό λ“€μ–΄, λ³€μˆ˜κ°€ "kim" λ˜λŠ” "park"만 κ°€μ§ˆ 수 μžˆλŠ” 이런 μ‹μ˜ μ—„κ²©ν•œ λ³€μˆ˜λŠ” λͺ» λ§Œλ“ λ‹€.

πŸ‘‰ 그럴 λ•Œ μ•„λž˜μ²˜λŸΌ literal type μ“°λ©΄ λœλ‹€.(이런 μ‹μ˜ 문법은 μžλ°”μŠ€ν¬λ¦½νŠΈμ— μ—†λ‹€)

const 이름 = "kim" | "park"

 

πŸ‘‰ literal type의 문제점 

let 자료 = {
  name : 'kim'
};

function λ‚΄ν•¨μˆ˜(a : 'kim') {

}
λ‚΄ν•¨μˆ˜(자료.name)

πŸ‘‰ μœ„μ˜ μ½”λ“œλŠ” μ—λŸ¬κ°€ λ‚œλ‹€. λ‚΄ν•¨μˆ˜μ— literal type을 μ‚¬μš©ν•΄μ„œ "kim"μ΄λΌλŠ” 것을 지정을 ν–ˆκ³ , 자료.name = "kim"인데, 같은 거라고 생각할 수 μžˆλŠ”λ°. 자료.name은 string μ†μ„±μ΄λΌμ„œ μœ„μ˜ μ½”λ“œμ—μ„œλŠ” μ—λŸ¬κ°€ λ°œμƒν•œλ‹€. 

 

πŸ‘‰ 해결방법

let 자료 = {
  name : 'kim'
} as const;

function λ‚΄ν•¨μˆ˜(a : 'kim') {

}
λ‚΄ν•¨μˆ˜(자료.name)

πŸ‘‰ as constλ₯Ό object μžλ£Œν˜•μ— 뢙이면 ν•΄κ²°λœλ‹€. as constλŠ” 두 κ°€μ§€μ˜ νš¨κ³Όκ°€ μžˆλ‹€. 

1️⃣ νƒ€μž…μ„ object의 value둜 λ°”κΏ”μ€€λ‹€. (νƒ€μž…μ„ "kim"으둜 λ°”κΏ”μ€€λ‹€)

2️⃣ object μ•ˆμ— μžˆλŠ” λͺ¨λ“  속성을 readonly둜 λ°”κΏ”μ€€λ‹€ (λ³€κ²½λ‚˜λ©΄ μ—λŸ¬λ‚˜κ²Œ)

728x90

'TypeScript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

였늘의 TypeScript  (0) 2023.07.19
였늘의 TypeScript  (0) 2023.07.17
였늘의 TypeScript  (0) 2023.05.09
였늘의 TypeScript  (0) 2023.05.08
였늘의 TypeScript  (0) 2023.05.05