TypeScript)열거형(enum)

Songss·2025년 1월 12일

TypeScript

목록 보기
3/10
enum RegionType {
  Legs,
  Chest,
  Back,
  Shoulders,
  Arms,
}

interface WorkOut {
  id: number;
  name?: string;
  region?: RegionType; // interface에 enum 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 메서드 정의
  setPlay(name: string): void {
    this.name = name;
    console.log(`Workout: ${this.name}`);
  }

  // getPlay 메서드 정의 (선택적 메서드)
  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 메서드 정의
  setPlay(name: string): void {
    this.name = name;
    console.log(`Workout: ${this.name}`);
  }

  // getPlay 메서드 정의 (선택적 메서드)
  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'); // Current WorkOut : Deadlift
squatWorkout.getPlay?.(); // test : e

0개의 댓글