|
(OR 연산자)interface Person {
name: string;
age: number;
}
interface Developer {
name: string;
skill: string;
}
두 타입을 유니언으로 연결한 후 someone.age
를 출력하면 age가 타입 중 포함이 되어 있는데도 에러 발생
function introduce(someone: Person | Developer) {
console.log(someone.age);
}
in
연산자와 typeof
키워드의 2가지 해결 방법 있음
in
연산자function introduce(someone: Person | Developer) {
if ('age' in someone) {
console.log(someone.age);
return;
}
if ('skill' in someone) {
console.log(someone.skill);
return;
}
}
typeof
키워드function logText(text: string | number) {
if (typeof text === 'string') {
console.log(text.toUpperCase());
}
if (typeof text === 'number') {
console.log(text.toLocaleString());
}
}
- 유니언 타입으로 여러 개의 타입을 조합해서 사용할 때는
in
이나typeof
연산자를 사용하여 사용할 타입을 구체적으로 확정해줘야 타입스크립트가 타입 부여를 명확히 할 수 있다.
&
(AND 연산자)interface Avenger {
name: string;
}
interface Hero {
skill: string;
}
function introduce(someone: Avenger & Hero) {
console.log(someone.name);
console.log(someone.skill);
}
?
) 사용someone?.name