고슴맨쉬
망치와 공(空)
고슴맨쉬
  • 분류 전체보기 (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)

태그

  • 프로그래머스
  • array
  • object
  • 코딩애플
  • react
  • axios
  • Ajax
  • CSS
  • Props
  • state
  • UXUI
  • 오류
  • redux
  • JavaScript
  • 삼항연산자
  • CS
  • class
  • json
  • useEffect
  • TypeScript
전체 방문자
오늘
어제
hELLO · Designed By 정상우.
고슴맨쉬

망치와 공(空)

📘 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)
    고슴맨쉬
    고슴맨쉬
    부수되 집착하지 않고, 이해하되 머무르지 않기

    티스토리툴바