Enum

선언

// 문자열 enum
enum Status {
    Pending = 'PENDING',
    Success = 'SUCCESS',
    Error = 'ERROR'
}

// 숫자 enum
enum Direction{
		Up,
		Down,
		Left,
		Right
}

사용

if(status === Status.pending) console.log('대기 중');

console.log(Direction[0]); // Up 출력

Union

선언

type Status = 'PENDING' | 'SUCCESS' | 'ERROR';

type code = string | null;

사용

if(status === 'PENDING') // 문자열 리터럴로 직접 비교
	console.log('대기 중');

차이

enum: 런타임에 실제 타입이 존재

union: 타입이 소거되고 문자열로서 존재