
interface가 아닌 type을 이용해 사용할 때, | 연산자로 or을 표현 가능
type StringOrNumber = string | number
const a:StringOrNumber = 'str'
const b:StringOrNumber = 123
const c:StringOrNumber = true // error
너무 많은 타입들을 유니온 타입으로 허용하게 되면, 타입 추론이 어려워짐
union 타입을 이용할 때는 안전하게 type guard로 한 번 타입을 검사/판별 하고 사용
interface가 아닌 type을 이용해 사용할 때, & 연산자로 and로 표현 가능
type GenderType = 'M' | 'F'
type Person = {
name: string
age: number
}
type Me = {
name: string
genderType: GenderType
}
const obj: Person & Me = {
name: 'Jang',
// age: 99,
genderType: 'M'
} // 하나라도 빠지면 and조건을 충족하지 않기 때문에 error