체인의정석

Typescript nested class에서 에러, 예외 처리부분 validate 함수로 만들어서 빼기 본문

개발/backend

Typescript nested class에서 에러, 예외 처리부분 validate 함수로 만들어서 빼기

체인의정석 2021. 7. 30. 13:04
728x90
반응형

에러를 발생시키거나 유효성을 검증하는 로직은 하나의 common 클래스로 만들고 그걸 가져와서 새로 validate 함수로 수정해 준다.

이런 식으로 추상 클래스를 모두 만들어주고 validate를 가져와서 오버라이딩 시키면서 예외를 잡아주는 구조를 잡아주는 것이 바람직하다.

 

적용전

  static fromJson(json: IntermediaryVASPType) {
    if (!json.intermediaryVASP) throw new Error(`Not a valid ivms101 structure : intermediaryVASP should be defined`);

    return new IntermediaryVASP({
      intermediaryVASP: Person.fromJson(json.intermediaryVASP),
    });
  }

적용 후

  validate(): boolean {
    if (!this.sequence) throw new Error(`Not a valid ivms101 structure : sequence should be defined`);

    return true;
  }

  static fromJson(json: IntermediaryVASPType) {
    const intermediaryVASP = new IntermediaryVASP({
      intermediaryVASP: Person.fromJson(json.intermediaryVASP),
    });

    intermediaryVASP.validate();

    return intermediaryVASP;
  }

가져오는 common class 에 정의된 validate

export abstract class Common {
  validate(): boolean {
    return true;
  }
}

이런식으로 클래스를 만들고 validate를 하게 되면 nested class형태에서 클래스를 타고 들어가면서 먼저 만들고 끝까지 들어가서 클래스가 모두 만들어지면 그 이후에 하나씩 빠져나오면서 요소를 검사하는 식으로 작동 순서가 전개되게 된다. 따라서 어느 위치에서 에러가 났는지도 더 순서대로 체크해가면서 알 수 있다. 만들때 에러가 나는지, 만들고 난 후에 validate중 어느 레벨에서 났는지가 서로 분리된 단계에서 체크되게 된다. 

728x90
반응형
Comments