일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 스마트컨트렉트테스트
- ambiguous function description
- 스마트 컨트렉트 함수이름 중복
- 머신러닝기초
- 스마트컨트렉트 예약어 함수이름 중복
- 깃허브명령어
- ethers
- nestjs 튜토리얼
- 러스트 기초
- 러스트 기초 학습
- 스마트컨트렉트 함수이름 중복 호출
- 컨트렉트 배포 자동화
- chainlink 설명
- ethers type
- Vue
- Vue.js
- nest.js설명
- 스마트컨트렉트프록시
- rust 기초
- 러스트기초
- git rebase
- vue기초
- ethers websocket
- 컨트렉트 동일한 함수이름 호출
- ethers v6
- 체인의정석
- multicall
- ethers typescript
- SBT표준
- 프록시배포구조
Archives
- Today
- Total
체인의정석
Typescript nested class에서 에러, 예외 처리부분 validate 함수로 만들어서 빼기 본문
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
반응형
'개발 > backend' 카테고리의 다른 글
Restful API에 맞게 수정하기 (0) | 2021.08.05 |
---|---|
Typescript) string을 받아와서 enum으로 고칠 경우 any를 안쓰고 타입체크하는 방법 (0) | 2021.07.30 |
Type script, implements (0) | 2021.07.30 |
optional chainning 적용 시 리턴값 문제 (0) | 2021.07.29 |
Optional chainning 사용하기, optional chainning을 사용할 수 없는 경우 해결 방안 (0) | 2021.07.29 |
Comments