[TypeScript] 리터럴, 유니온
Literal Types
const userName1 = "Bob"; // const userName1: "Bob"
let userName2 = "Son"; // let userName2: string
userName2 = 3; // err
이 때 userName1처럼 정해진 string 값을 가진 것을 문자열 리터럴 타입이라고 한다.
type Job = "police" | "developer" | "teacher";
interface User {
name: string;
job: Job;
}
const user: User = {
name: "Bob",
job: "student", // err - Type "student" is not assignable to type 'Job'
};
Union Types
or처럼 사용
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);
gift.start(); // err - Property 'start' does not exist on type 'Mobile'.
if (gift.name === "car") {
gift.start(); // (Parameter) gift : Car
} // 검사 항목이 많아지면 switch
}
동일한 속성의 타입을 다르게 해서 구분하는 것이 식별 가능한 유니온 타입이라고 한다.
Intersection Type(교차 타입)
여러 타입을 합쳐서 사용
and처럼 사용
interface Car {
name: string;
start(): void;
}
interface Toy {
name: string;
color: string;
price: number;
}
const toyCar: Toy & Car = {
name: "타요",
start() {},
color: "blue",
price: 1000,
};
&(교차타입)를 사용할 때는 모든 속성을 전부 기입해야 한다.
Type alias
타입은 변수에 담아 사용할 수 있다.
type MyType = string | number;
let name: MyType = "Bob";
타입명은 보통 대문자로 사용한다.
댓글남기기