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)
- 타입을 object의 value로 바꿔준다. (타입을 'kim'으로)
- 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 |