리터럴, 유니온/교차 타입
리터럴 타입(Literal Types)
TypeScript에는 문자열과 숫자, 두 가지 리터럴 타입이 있는데 이를 사용하면 문자열이나 숫자에 정확한 값을 지정할 수 있다.
userName1처럼 정해진 string 값을 가진 변수를 '문자열 리터럴 타입'이라고 한다.
📌 Literal Types
const userName1 = "Bob";
let userName2 = "Tom";
// userName2 = 3
// -> Error : 최초 할당된 값이 string이므로
// Literal + Union
// | : Union Type
type Job = "policer" | "developer" | "teacher";
interface User {
name: string;
job: Job;
}
const user: User = {
name: "Bob",
job: "policer"
// 문자형 리터럴 타입
}
interface HighSchoolStudent {
name: String;
grade: 1 | 2 | 3;
// 숫자형 리터럴 타입
}
job / grade에는 허용된 세 개의 값이 아닌 다른 값을 사용할 수 없다. (사용시 오류 발생)
유니온 타입(Union Types)
유니온 타입(Union Types)이란 자바스크립트의 OR 연산자(||)와 같이 'A' 이거나 'B'이다 라는 의미의 타입이다.
📌 Union Types
interface Car {
name: "car";
color: "string";
start(): void;
}
interface Mobile {
name: "mobile";
color: string;
call(): void;
}
function getGift (gift: Car | Mobile) {
console.log(gift.color);
if (gift.name === "car") {
gift.start();
} else {
gift.call()
}
}
여기선 if문을 사용했지만, 검사할 항목이 많아지면 switch를 사용하는 것이 가독성에 좋다.
getGift()의 파라미터 gift에는 Car나 Mobile 타입이 모두 올 수 있다.
이렇게 동일한 속성의 타입을 다르게 해서 구분할 수 있는 것을 '식별 가능한 유니온 타입'이라고 한다.
교차 타입(Intersection Type)
교차 타입(Intersection Types)이란 여러 타입을 하나로 합쳐주는 역할을 한다.
유니온 타입이 or 연산자(||)와 같이 작동한다면, 교차 타입은 and (&&)를 의미한다. (✅ 'A' 그리고 'B')
📌 Intersection Types
// Intersection Types : 교차 타입
interface Car {
name: string;
start(): void;
}
interface Toy {
name: string;
color: string;
price: number;
}
const toyCar: Toy & Car = {
name: "타요",
color: "red",
price: 100,
start() {
console.log("출발합니다")
},
}
🚀 참고
'TypeScript' 카테고리의 다른 글
[TypeScript] 제네릭(Generics) - 사용법 및 간단 예제 (0) | 2023.02.08 |
---|---|
[TypeScript] 클래스 사용- 접근 제한자, readonly, static, abstract (0) | 2023.02.04 |
[TypeScript] 함수 - 함수 정의 방법과 다양한 사용 (0) | 2023.01.31 |
[TypeScript] 인터페이스(interface) - 사용 유형과 확장 (0) | 2023.01.31 |
[TypeScript] 특징 및 기본 타입 - void, never, enum (0) | 2023.01.30 |
댓글