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 |
Tags
- JS console
- 리액트
- 2022
- const 단언문
- returnType
- 성능최적화
- 타입좁히기
- vue.js
- 티스토리꾸미기
- NonNullable
- click and drag
- 제네릭
- 개발콘텐츠
- React.js
- typescript
- 타입스크립트
- TSDoc
- react
- Chart.js
- javascript
- 공통컴포넌트
- reactjs
- 누구나 자료구조와 알고리즘
- React Native
- 폰트적용하기
- 레이아웃쪼개기
- 커스텀
- utilty type
- CSS
- 반복줄이기
Archives
- Today
- Total
몽땅뚝딱 개발자
[TypeScript] 유니온 타입 vs 인터섹션 타입 본문
◽ 유니온 타입
여러가지의 타입을 파이브로 연결하여 지정할 수 있다.
// 변수에 사용하기
const user = string | number
// 함수에 사용하기
function logMessage(value: string | number) {
console.log(value);
}
logMessage('hello')
logMessage(10)
📄 예제
// 유니온 타입
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 인터섹션 타입
📄 유니온
각 인터페이스의 속성이 개별적으로 필요하다.
function askSomeone(someone: Developer | Person) {
// ...
}
askSomeone({ name: '디벨로퍼', skill: '웹 개발' })
askSomeone({ name: '디벨로퍼', age: 10000 })
📄 인터섹션
각 인터페이스가 가진 모든 속성을 포함해야 한다.
function askSomeone(someone: Developer & Person) {
// ...
}
askSomeone({ name: '디벨로퍼', skill: '웹 개발', age: 10000 })
출처
타입스크립트 입문 - 기초부터 실전까지 - 인프런 | 강의
타입스크립트를 시작하는 분들을 위한 강의입니다. 최신 자바스크립트 문법을 모르는 분들도 쉽게 배울 수 있도록 교과 과정을 구성하였습니다. 어렵게만 느껴지는 타입스크립트를 입문자 관
www.inflearn.com
'Development > Typescript' 카테고리의 다른 글
[TypeScript] 제네릭(Generic) - 다시보기 (0) | 2022.06.06 |
---|---|
[TypeScript] 이넘(Enum) (0) | 2022.06.06 |
[TypeScript] 인터페이스 (0) | 2022.06.06 |
[TypeScript] 변수와 함수의 타입 정의 (0) | 2022.06.06 |
[Typescript] playground (0) | 2022.06.06 |