enum RegionType {
Legs,
Chest,
Back,
Shoulders,
Arms,
}
interface WorkOut {
id: number;
name?: string;
region?: RegionType;
requipment?: string;
setPlay: (name: string) => void;
getPlay?: () => void;
}
class playWorkout implements WorkOut {
id: number;
name: string;
region: RegionType;
requipment?: string;
constructor(id: number, name: string, region: RegionType, requipment?: string) {
this.id = id;
this.name = name;
this.region = region;
this.requipment = requipment;
}
setPlay(name: string): void {
this.name = name;
console.log(`Workout: ${this.name}`);
}
getPlay?(): void {
console.log(`Current Workout: ${this.name}, Region: ${RegionType[this.region]}`);
}
}
const squatWorkout = new playWorkout(1, 'Squat', RegionType.Legs, 'Barbell');
squatWorkout.setPlay('Deadlift');
squatWorkout.getPlay?.();
이점
RegionType 열거형을 사용함으로써 region 필드가 특정 값만 가지도록 강제할 수 있습니다.
- 문자열 대신 열거형을 사용하면 오타나 잘못된 값 입력을 방지할 수 있습니다.
- 열거형 값을 출력할 때는
RegionType[열거형값]을 사용하여 가독성을 높였습니다
열거형 추가 복습
enum RegionType {
Legs = 'a',
Chest = 'b',
Back = 'c',
Shoulders = 'd',
Arms = 'e',
}
interface WorkOut {
id: number;
name?: string;
region?: RegionType;
requipment?: string;
setPlay: (name: string) => void;
getPlay?: () => void;
}
class playWorkout implements WorkOut {
id: number;
name: string;
region: RegionType;
requipment?: string;
constructor(id: number, name: string, region: RegionType, requipment?: string) {
this.id = id;
this.name = name;
this.region = region;
this.requipment = requipment;
}
setPlay(name: string): void {
this.name = name;
console.log(`Workout: ${this.name}`);
}
getPlay?(): void {
console.log(`Current Workout: ${this.name}`);
console.log(`test : ${RegionType.Arms}`);
}
}
const squatWorkout = new playWorkout(1, 'Squat', RegionType.Legs, 'Barbell');
squatWorkout.setPlay('Deadlift');
squatWorkout.getPlay?.();