연관된 아이템들을 함께 묶어서 표현할 수 있는 수단이다. Complie된 파일을 보면 Enum은 Interface와 다르게 코드가 직접적으로 구현되어 있는데 이는 Enum이 runtime에 존재하는 실제 객체라는 것을 의미한다.
enum GenderType {
Male,
Female
};
interface Student {
gender: GenderType,
subject: string
};
function getStudentDetails(studentID: number): Student {
return {
gender: GenderType.Male,
subject: "Node JS"
}
};
enum GenderType {
Male,
Female
};
↓
(Compile시 enum의 item에 각각의 숫자자 부여됨을 알 수 있다.)
var GenderType;
(function (GenderType) {
GenderType[GenderType["Male"] = 0] = "Male";
GenderType[GenderType["Female"] = 1] = "Female";
})(GenderType || (GenderType = {}));
enum GenderType {
Male: "male",
Female: "female"
};
↓
var GenderType;
(function (GenderType) {
GenderType["Male"] = "male";
GenderType["Female"] = "female";
})(GenderType || (GenderType = {}));
emum과 동일하게 literal item의 type을 구분하면서 좀 더 알기쉽고 간결하게 정의할 수 있는 장점이 있다. 각각의 literal을 " | " 으로 구분하여 연결하면 된다.
interface Student {
gender: "male" | "female",
subject: string
};
function getStudentDetails(studentID: number): Student {
return {
gender: "male",
subject: "Node JS"
}
};
출처: YOUTUBE-땅콩코딩