자바스크립트 클래스에서 객체의 속성을 유효성 검사하는 방법은 무엇인가요?
  1. 생성자 함수와 조건문을 사용한 유효성 검사:
    class Person {
      constructor(name, age) {
     if (typeof name === 'string') {
       this.name = name;
     } else {
       throw new Error('name 속성은 문자열이어야 합니다.');
     }
    
     if (typeof age === 'number' && age > 0) {
       this.age = age;
     } else {
       throw new Error('age 속성은 양수 숫자여야 합니다.');
     }
      }
    }
    
  2. Object.defineProperty()를 사용한 유효성 검사:
    class Person {
      constructor(name, age) {
     Object.defineProperty(this, 'name', {
       get() {
         return name;
       },
       set(value) {
         if (typeof value === 'string') {
           name = value;
         } else {
           throw new Error('name 속성은 문자열이어야 합니다.');
         }
       }
     });
    
     Object.defineProperty(this, 'age', {
       get() {
         return age;
       },
       set(value) {
         if (typeof value === 'number' && value > 0) {
           age = value;
         } else {
           throw new Error('age 속성은 양수 숫자여야 합니다.');
         }
       }
     });
    
     this.name = name;
     this.age = age;
      }
    }
    
  3. Proxy를 사용한 유효성 검사:
    class Person {
      constructor(name, age) {
     this.name = new Proxy(name, {
       set(target, prop, value) {
         if (typeof value === 'string') {
           target[prop] = value;
           return true;
         } else {
           throw new Error('name 속성은 문자열이어야 합니다.');
         }
       }
     });
    
     this.age = new Proxy(age, {
       set(target, prop, value) {
         if (typeof value === 'number' && value > 0) {
           target[prop] = value;
           return true;
         } else {
           throw new Error('age 속성은 양수 숫자여야 합니다.');
         }
       }
     });
      }
    }
    

이러한 방법들은 객체의 속성을 유효성 검사하고 원하는 조건에 맞지 않으면 에러를 발생시킵니다. 다만, 사용자가 클래스를 인스턴스화하는 시점에서 유효성 검사가 수행되므로, 객체 속성의 값이 나중에 변경될 경우를 대비하여 값 변경 시에도 유효성 검사 로직을 추가하는 것이 좋습니다.

[#javascript], [#programming]