만약에 gender의 범주에 male, female만 값으로 넣고 싶다면 타입을 string
말고 특정지어서 사용할 수는 없을까?
프로퍼티 값을 제한할 수 있는 방법은 두가지가 있다.
연관된 아이템들을 함께 묶어서 표현 할 수 있는 수단
{
Male = 0,
Female = 1,
getderNeutral = 2
}
위 개념이 바로 타입스크립트에서 숫자 열거형(Numeric Enum)을 뜻한다.
만약 여기서 숫자값을 갖지 않고 string 값을 갖길 원한다면 문자형 열거형을 쓸 수도 있다.
//enum 사용을 위해 선언을 한다.
enum GenderType {
//선택지로 쓸 수 있는 값을 넣는다.
//숫자 열거형
//Male,
//Female
//문자 열거형
Male = 'male',
Female = 'female',
genderNeutral = 'genderNeutral'
}
interface Student4 {
readonly studentID: number;
studentName: string;
age?: number;
//string이 아닌 선언된 enum을 타입으로 지정해서 쓴다.
gender: GenderType;
createDate: Date;
}
function getStudentDetails1(studentId: number): Student4 {
return {
studentID: 3,
studentName: 'Moon',
//gender type이 string 형태라 발생하는 에러
//gender: 'male',
gender: GenderType.Male,
createDate: new Date
}
}
파이프 기호로 제한할 값을 지정하는 방법
interface Student5 {
readonly studentID: number;
studentName: string;
age?: number;
gender: 'male' | 'female' | 'genderNeutral';
createDate: Date;
}