일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 컨트렉트 동일한 함수이름 호출
- ethers type
- ethers websocket
- SBT표준
- 스마트컨트렉트 예약어 함수이름 중복
- rust 기초
- ethers
- ethers typescript
- Vue.js
- 러스트 기초 학습
- 체인의정석
- git rebase
- ambiguous function description
- 머신러닝기초
- 스마트컨트렉트테스트
- erc4337 contract
- ethers v6
- chainlink 설명
- 티스토리챌린지
- 컨트렉트 배포 자동화
- Vue
- erc4337
- 러스트기초
- vue기초
- 계정추상화
- 스마트 컨트렉트 함수이름 중복
- 러스트 기초
- multicall
- 스마트컨트렉트 함수이름 중복 호출
- 오블완
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