// 사용자 정의 타입 (alias)
type Combinable = number | string;
type ConversionDescriptor = 'as-number' | 'as-text';
function combine(
n1: Combinable,
n2: Combinable,
resultConversion: ConversionDescriptor,
){
let result;
if(typeof n1 === 'number' && typeof n2 === 'number'|| resultConversion === 'as-number') {
result = +n1 + +n2;
} else {
result= n1.toString() + n2.toString();
}
return result;
}
const combinedIntAges = combine(30, 26, 'as-number');
console.log(combinedIntAges);
const combinedStringAges = combine('30', '26', 'as-number');
console.log(combinedStringAges);
const combinedNames = combine('Max', 'Anna', 'as-text');
console.log(combinedNames);
* 타입 별칭을 사용하면 불필요한 반복을 피하고 타입을 중심에서 관리할 수 있습니다.
function greet(user: { name: string; age: number }) {
console.log('Hi, I am ' + user.name);
}
function isOlder(user: { name: string; age: number }, checkAge: number) {
return checkAge > user.age;
}
단순화 후:
type User = { name: string; age: number };
function greet(user: User) {
console.log('Hi, I am ' + user.name);
}
function isOlder(user: User, checkAge: number) {
return checkAge > user.age;
}