Zoeeey
Stack flows in you
Zoeeey
  • λΆ„λ₯˜ 전체보기 (155)
    • πŸ’‘ UXUI (4)
      • UXUI (2)
      • UI (2)
      • UX (0)
    • 🟨 JavaScript (66)
      • κ°œλ… (42)
      • 정리 (2)
      • λ¬Έμ œν’€κΈ° (ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€, μ½”λ”©μ• ν”Œ) (15)
      • μ‘μš©ν•˜μ—¬ μžλ™ν™”orλ¬Έμ œν•΄κ²°ν•˜κΈ° (2)
      • 기타 (5)
    • βš›οΈ React (49)
      • κ°œλ… (27)
      • κ°œλ…(Redux) (3)
      • 정리 (4)
      • λ¬Έμ œν’€κΈ° (μ½”λ”©μ• ν”Œ: React) (15)
    • πŸ“˜ TypeScript (10)
      • κ°œλ… (8)
      • λ¬Έμ œν’€κΈ° (μ½”λ”©μ• ν”Œ) (2)
    • 🌐 HTML,CSS (18)
      • μ‹€λ¬΄μ—μ„œ 자주 λ°œμƒν•œ 였λ₯˜λ“€ (10)
      • λ’€λŠ¦κ²Œ μ•Œμ•„μ„œ λΌˆμ•„ν”ˆ μœ μš©ν•œ CSS (6)
      • 기타 자주 μ“°λŠ” CSS (2)
    • πŸ’» CS (8)
      • CS (5)
      • μ •κ·œν‘œν˜„μ‹ (2)
      • Git,Github (1)

νƒœκ·Έ

  • object
  • CSS
  • axios
  • JavaScript
  • μ‚Όν•­μ—°μ‚°μž
  • 였λ₯˜
  • useEffect
  • UXUI
  • state
  • μ½”λ”©μ• ν”Œ
  • redux
  • CS
  • react
  • class
  • json
  • TypeScript
  • Ajax
  • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€
  • array
  • Props
전체 방문자
였늘
μ–΄μ œ
hELLO Β· Designed By μ •μƒμš°.
Zoeeey

Stack flows in you

πŸ“˜ TypeScript/κ°œλ…

[μ½”λ”©μ• ν”Œ] νƒ€μž…μ„ νŠΉμ • κ°’μœΌλ‘œ μ§€μ •ν•˜μž : Literal Types (+ as const)

2023. 12. 13. 13:21

Literal Types

νƒ€μž…μ§€μ •μ„ λ”μš± strictν•˜κ²Œ νŠΉμ • κΈ€μžλ‚˜ 숫자만 κ°€μ§ˆ 수 있게 μ œν•œμ„ λ‘˜ 수 μžˆλ‹€.

// λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄ νƒ€μž…μ„ μ‚¬μš©ν•œ νŒŒλΌλ―Έν„°
function greet(name: "Alice" | "Bob"): "Hello, Alice!" | "Hello, Bob!" {
    return `Hello, ${name}!`;
}

// 숫자 λ¦¬ν„°λŸ΄ νƒ€μž…μ„ μ‚¬μš©ν•œ νŒŒλΌλ―Έν„°
function multiply(a: 2 | 3, b: 2 | 3): 6 {
    return a * b;
}

// λΆˆλ¦¬μ–Έ λ¦¬ν„°λŸ΄ νƒ€μž…μ„ μ‚¬μš©ν•œ 리턴값
function isAdmin(userType: "admin" | "regular"): boolean {
    return userType === "admin";
}

// μ‚¬μš© μ˜ˆμ‹œ
console.log(greet("Alice")); // Hello, Alice!
console.log(multiply(2, 3));   // 6
console.log(isAdmin("admin")); // true

문제점

var data = {
  name : 'kim'
}
function sayName(a : 'kim') {}

sayName(data.name)

μœ„ μ½”λ“œλŠ” μ—λŸ¬κ°€ λ‚œλ‹€. ν•¨μˆ˜λŠ” 'kim' νƒ€μž…λ§Œ μž…λ ₯ν•  수 μžˆλ‹€κ³  해놨고  자료.name μ΄λΌλŠ”κ±΄ string νƒ€μž…μ΄μ§€ 'kim' νƒ€μž…μ΄ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ΄λ‹€.


ν•΄κ²°ν•˜λ €λ©΄?

assertion μ‚¬μš©

var data = {
  name: 'kim'
}
function sayName(a: 'kim') { }

sayName(data.name as 'kim'); // νƒ€μž… μ–΄μ„€μ…˜ μ‚¬μš©

as const μ‚¬μš©

var data = {
  name : 'kim'
} as const; // as const μ‚¬μš©

function sayName(a : 'kim') { }

sayName(data.name)
  1. νƒ€μž…μ„ object의 value둜 λ°”κΏ”μ€€λ‹€. (νƒ€μž…μ„ 'kim'으둜)
  2. objectμ•ˆμ— μžˆλŠ” λͺ¨λ“  속성을 readonly둜 λ°”κΏ”μ€€λ‹€ (λ³€κ²½ν•˜λ©΄ μ—λŸ¬λ‚˜κ²Œ)

objectλ₯Ό 잠그고 μ‹ΆμœΌλ©΄ as constλ₯Ό ν™œμš©ν•˜μž.


좜처 : μ½”λ”©μ• ν”Œ https://codingapple.com/ / TypeScript Documentation https://www.typescriptlang.org/docs/handbook/2/objects.html

μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ 동일쑰건 (μƒˆμ°½μ—΄λ¦Ό)

'πŸ“˜ TypeScript > κ°œλ…' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[μ½”λ”©μ• ν”Œ] νƒ€μž…μŠ€ν¬λ¦½νŠΈ HTML μ‘°μž‘μ‹œ 주의점 (1)  (0) 2023.12.17
[μ½”λ”©μ• ν”Œ] ν•¨μˆ˜μ™€ object λ©”μ„œλ“œμ— type alias μ§€μ •ν•˜κΈ°  (0) 2023.12.13
[μ½”λ”©μ• ν”Œ] νƒ€μž…μ„ λ³€μˆ˜μ— λ‹΄μž : type alias  (0) 2023.12.11
νƒ€μž…μŠ€ν¬λ¦½νŠΈ νƒ€μž… μœ μΆ”(Type Inference)  (0) 2023.12.07
[μ½”λ”©μ• ν”Œ] νƒ€μž…μŠ€ν¬λ¦½νŠΈ νƒ€μž… μ§€μ • 방법  (0) 2023.12.07
    'πŸ“˜ TypeScript/κ°œλ…' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [μ½”λ”©μ• ν”Œ] νƒ€μž…μŠ€ν¬λ¦½νŠΈ HTML μ‘°μž‘μ‹œ 주의점 (1)
    • [μ½”λ”©μ• ν”Œ] ν•¨μˆ˜μ™€ object λ©”μ„œλ“œμ— type alias μ§€μ •ν•˜κΈ°
    • [μ½”λ”©μ• ν”Œ] νƒ€μž…μ„ λ³€μˆ˜μ— λ‹΄μž : type alias
    • νƒ€μž…μŠ€ν¬λ¦½νŠΈ νƒ€μž… μœ μΆ”(Type Inference)
    Zoeeey
    Zoeeey
    길게 μƒκ°ν•˜κ³  짧게 그리기

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”