Union type
function logMessage(value: string | number) {
console.log(value);
}
logMessage('hello');
logMessage(100);
타입가드
조건문에서 객체의 타입을 좁혀나갈 수 있다.
var jong: 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 of nubmer')
}
interface 두개를 입력했을때
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
function askSomone(someone: Developer | Person) {
someone.name
someone.age //오류
someone.skill //오류
}
//오류가 발생하지 않음.
askSomeone({ name: 'develop', skill: 'web' })
askSomeone({ name: 'dev', age: 100 })
❗️위와 같이 입력하고 싶을때, age 와 skill은 아래와 같이 오류가 난다.
=> name 이라는 속성만 공통되어있기에 나머지는 오류가 날 수 있다고 판단하기 때문.
만약 age와 skill도 사용하고 싶다면 위에서 정의한 것처럼 타입가드를 사용해야한다.
Intersection
& 연산자를 이용한다.
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
function askSomeone2(someone: Developer & Person) {
someone.name;
someone.skill;
someone.age;
}
askSomeone({ name: 'develop', skill: 'web' }) //age가 없다고 오류남
'개발공부 > 개념정리 | TypeScript' 카테고리의 다른 글
제네릭 (0) | 2022.12.26 |
---|---|
이넘(Enums) (0) | 2022.12.23 |
인터페이스 / 타입 별칭 (0) | 2022.12.22 |
기본 타입 && 함수타입 (0) | 2022.12.21 |
기초설정 (0) | 2022.12.21 |