반응형
# TypeScript
## 연산자를 이용한 타입 정의
Union Type (유니온 타입).
- union type : 특정 변수 또는 파라미터에 한가지 이상의 타입을 사용할 수 있도록하는 것.
- 키워드 : ' | ' 연산자 사용. (or 개념)
function logMessage(value: string | number) {
console.log(value);
}
logMessage('hello');
logMessage(100);
Union Type 장점.
- 타입 가드 : 특정 타입으로 타입의 범위를 좁혀나가는 (필터링 하는) 과정.
var seho: string | number | boolean;
function logMessage(value: string | number) {
if (typeof value == 'number') { // 타입 가드.
value.toLocaleString();
}
if (typeof value == 'string') { // 타입 가드.
value.toString();
}
throw new TypeError('value must be string or number');
}
logMessage('hello');
logMessage(100);
Union Type 특징.
- 구조체가 union type이 되면 타입의 공통된 속성만 접근 가능.
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
function askSomeone(someone: Developer | Person) {
someone.name // union type으로 구조체 여러개 사용한 경우, 공통 속성만 접근 가능.
//someone.skill // 불가.
//someone.age // 불가.
}
Intersection Type (인터섹션 타입).
- 키워드 : ' & ' 연산자 사용. (and 개념)
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
var seho: string | number | boolean;
var capt: string & number & boolean; // 불가능.
function askSomeone2(someone: Developer & Person) {
someone.name // 가능.
someone.skill // 가능.
someone.age // 가능.
}
유니온 타입과 인터섹션 타입의 차이점.
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
function askSomeone3(someone: Developer | Person) {
}
askSomeone3({name:'디벨로퍼', skill: '웹 개발'}); // Developer or Person 속성을 가져야함.
askSomeone3({name: 'abc', age:100});
function askSomeone4(someone: Developer & Person) { // 두 개 타입의 합집합에 해당하는 새로운 타입을 만들게 됨.
}
askSomeone4({name:'디벨로퍼', skill: '웹 개발', age: 100}); // Developer,Person 속성 모두 가져야함.
반응형
'인프런 강의 학습 > TypeScript' 카테고리의 다른 글
TypeScript 9일차_클래스 (0) | 2022.03.21 |
---|---|
TypeScript 8일차_이넘(Enum) (0) | 2022.03.20 |
TypeScript 6일차_타입 별칭 (0) | 2022.03.19 |
TypeScript 5일차_인터페이스 (0) | 2022.03.19 |
TypeScript 4일차_할 일 관리 애플리케이션 TS 변환 (0) | 2022.03.18 |