|
연산자 이용하여 타입을 여러 개 연결하는 방식을 유니온 타입 정의 방식이라고 부른다.||
)와 같이 A이거나 B이라는 의미의 타입.any
를 사용할 경우, JavaScript로 작업하는 것이다.// Any
function getName(name: any) {
console.log(`result name ${name}`);
return name;
}
// Union
function getAge(age: string | number) {
if (typeof age === 'string') {
console.log(`result age string ${age}`);
}
if (typeof age === 'number') {
console.log(`result age number ${age}`);
}
}
getAge('21');
interface Person {
name: string;
age: number;
};
interface Developer {
name: string;
skill: string[];
};
function introduce(someone: Person | Developer) {
someone.name; // 정상 동작
someone.age; // 타입 오류
someone.skils; // 타입 오류
}
type
라는 속성은 모든 유니온 구성원에 존재하는 리터털 타입이다.===
,!==
또는switch
를 사용하면 TypeScript가 특정한 리터럴을 가진 객체를 대상한다는 것을 타입을 좁히기 실행한다.interface Bird {
type: 'bird';
flyingSpeed: number;
}
interface Horse {
type: 'horse';
runningSpeed: number;
}
type Animal = Bird | Horse;
function moveAnimal(animal: Animal) {
let speed;
switch (animal.type) {
case 'bird':
speed = animal.flyingSpeed;
break;
case 'horse':
speed = animal.runningSpeed;
}
console.log('Moving at speed : ' + speed);
}
moveAnimal({ type: 'bird', flyingSpeed: 10 });
&
연산자 이용하여 모두 만족하는 하나의 타입을 인터섹션 타입이라고 부른다.&
연산자 이용하여 인턱섹션 타입을 정의할 수 있다. // Interface
interface Person {
name: string;
age: number;
}
interface Developer {
name: string;
skills: string[];
}
type Com = Person & Developer;
const D1: Com = {
name: 'viva',
age: 21,
skills: ['html', 'css'],
};
console.log(D1); // { name: 'viva',....}
타입스크립트 핸드북 →(SITE)