반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 국비코딩
- 평일코딩
- javascript
- 이안의평일코딩
- typescript
- 정보처리기사실기요약
- php
- 타입스크립트
- 리액트
- 정보처리기사
- spring
- react
- 정보처리기사실기
- 자바의정석
- 자스코테
- 정보처리기사정리
- Java의정석
- 정보처리기사요약
- 스프링
- 코딩테스트
- 리액트네이티브
- 자바스크립트
- 자바스크립트 코딩테스트
- 국비IT
- VUE
- 오라클
- CSS
- ReactNative
- 정보처리기사실기정리
- Oracle
Archives
- Today
- Total
이안의 평일코딩
[TypeScript] 타입스크립트 기초 (3) - 유니온 타입과 인터섹션 타입 본문
반응형
유니온 타입 ' | '
특정 타입을 여러개 쓸 수 있게 해준다.
function logMessage(value: string | number) {
console.log(value);
}
logMessage('Hi');
logMessage(100);
파라미터.을 찍으면 해당하는 타입의 API를 자동완성을 통해 쉽게 이용할 수 있다.
var todo: 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');
}
유니온 타입이 인터페이스들을 연결했을 때 공통된 속성만 접근 가능하다.
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
function askSomeone(someone: Developer | Person) {
someone.name //공통 속성만(보장된 속성만) 가능
// 에러가 날 수 있어 타입 검증이 필요하므로 불가능
//someone.skill
//someone.age
}
인터섹션 타입 ' & '
유니온 타입과 달리 갖고있는 모든 속성의 타입을 포함시킨다.
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
function askSomeone(someone: Developer & Person) {
someone.name
someone.skill
someone.age
}
유니온 타입 vs 인터섹션 타입
아래의 예시에서 유니온 타입은 Developer 파라미터나 Person 파라미터가 들어가면 되지만,
인터섹션 타입은 Developer, Person 파라미터 속성 모두 합쳐서(name, skill, age) 들어가야 한다.
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
// 유니온 타입
function askSomeone(someone: Developer | Person) {
}
askSomeone({ name: '개발자', skill: '타입스크립트'});
askSomeone({ name: '이안', age: 28 });
// 인터섹션 타입
function askSomeone(someone: Developer & Person) {
}
askSomeone({ name: '이안', age: 28, skill: '타입스크립트'}); // 하나라도 누락시 오류
반응형
'Front-end > TypeScript' 카테고리의 다른 글
[TypeScript] 타입 추론, 단언, 가드, 호환, 모듈화 (0) | 2021.01.22 |
---|---|
[TypeScript] 타입스크립트 기초 (5) - 제네릭 (0) | 2021.01.21 |
[TypeScript] 타입스크립트 기초 (4) - 이넘, 클래스 (2) | 2021.01.20 |
[TypeScript] 타입스크립트 기초 (2) - 인터페이스와 타입 별칭 (0) | 2021.01.19 |
[TypeScript] 타입스크립트 기초 (1) - 타입 (0) | 2021.01.18 |
Comments