[참고영상]
리터럴(Literal)
변수 선언 시 const, let 사용
둘의 차이는 const는 변하지 않는 값을 선언할 때, let은 변할 수 있는 값을 선언할 때 사용.
// Literal Types
const userName1 = "Bob"; // 문자열 리터럴 타입
let userName2:string | number = "Charlie";
userName2 = 3;
- userName1처럼 정해진 string 값을 가진 것을 문자열 리터럴 타입이라고 함.
유니온(Union)
// Union Type
let userName2:string | number = "Charlie";
userName2 = 3;
- userName2처럼 타입을 지정해주면 userName2 변수에는 string 타입과 number 타입 모두 저장 가능함. 이런걸 바로 유니온 타입이라고 함.
// Union Types
interface Car2 {
name: "car";
color: string;
start(): void;
}
interface Mobile {
name: "mobile";
color: string;
call(): void;
}
function getGift(gift: Car2 | Mobile) {
console.log(gift.color);
gift.start();
}
이렇게 작성하면 Mobile에는 start() 메소드가 없기 때문에 아래와 같이 gift.start()에 에러가 발생한다.
그러므로 아래와 같이 명시적으로 나타내주어야 함.
function getGift(gift: Car2 | Mobile) {
console.log(gift.color);
if(gift.name === "car"){
gift.start();
}else{
gift.call();
}
}
이렇게 동일한 속성의 타입을 다르게 하여 구분할 수 있는 것을 식별 가능한 유니온 타입이라고 함.
검사해야할 항목이 많아진다면 if문보다는 switch문이 더 효과적.
교차 (Intersection)
교차 타입은 여러 개의 타입을 하나로 합쳐주는 역할을 함.
// Intersection Types
interface Car3 {
name: string;
start(): void;
}
interface Toy {
name: string;
color: string;
price: number;
}
const toyCar: Toy & Car3 = {
name: "타요",
start() {},
color: "blue",
price: 1000,
}
교차 타입으로 타입을 지정한 toyCar에는 Toy와 Car3의 속성들을 모두 넣어주어야 에러가 발생하지 않는다.
'Language > Javascript·Typescript' 카테고리의 다른 글
[Javascript/자바스크립트] 타입 (0) | 2024.06.19 |
---|---|
[TypeScript/타입스크립트] 클래스 Class (0) | 2023.04.06 |
[TypeScript/타입스크립트] 함수 (0) | 2023.03.31 |
[TypeScript/타입스크립트] 인터페이스(interface) (0) | 2023.03.06 |
[TypeScript/타입스크립트] 타입스크립트 설치하기 (0) | 2023.03.06 |