타입 별칭

// 타입 별칭(Alias)
// 타입의 별명, 이름을 지어주는 것
// 이름을 통해 재사용을 할 수 있다.
type typeA = string
type typeB = string|number|boolean

type User = {
    name : string
    age : number
    isValid: boolean
} | [string, number, boolean] // 객체 타입 혹은 튜플 타입으로 사용할 수 있다.

const userA : User = {
    name : 'Neo',
    age : 85,
    isValid : true,
}

const userB: User = ['even', 36, false];

function sumeFunc(param: typeB): typeA {
    switch(typeof param){
        case 'string':
        return param.toUpperCase()
        case 'number':
        return param.toFixed(2)
        default:
        return 'Boolean!'
        // return true // string으로 지정 안해줌
    }
}
// 인터페이스는 인터페이스 이름, 데이터 이름, 타입
// 타입 별칭은 할당 연산자가 필수적이다.
// 기능적 차이는 없고, 취향 차이인데
// 인터페이스를 권장한다.

type TypeUser = {
    name: string
    age: number
}

interface InterfaceUser {
    name: string
    age: number
}