일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 스마트컨트렉트 예약어 함수이름 중복
- 컨트렉트 동일한 함수이름 호출
- 러스트 기초
- ethers v6
- ethers type
- 러스트기초
- multicall
- vue기초
- 스마트컨트렉트테스트
- 체인의정석
- 티스토리챌린지
- erc4337
- ethers
- ambiguous function description
- 러스트 기초 학습
- ethers websocket
- 스마트 컨트렉트 함수이름 중복
- 계정추상화
- 스마트컨트렉트 함수이름 중복 호출
- 컨트렉트 배포 자동화
- SBT표준
- Vue
- 머신러닝기초
- git rebase
- erc4337 contract
- ethers typescript
- Vue.js
- chainlink 설명
- 오블완
- rust 기초
- Today
- Total
체인의정석
typescript undefined 조건문 검사 spread syntax 와 &&를 사용하여 코드 단축하기 본문
코드리뷰를 받으면서 더 깔끔한 코드를 작성하기위하여 한가지 트릭을 피드백 받아 정리한다.
이를 이해하기 위해서는 spread에 대한 기본 지식이 필요하다.
먼저 spread syntax 부터 찾아 보았다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Spread_syntax
전개 구문 - JavaScript | MDN
전개 구문을 사용하면 배열이나 문자열과 같이 반복 가능한 문자를 0개 이상의 인수 (함수로 호출할 경우) 또는 요소 (배열 리터럴의 경우)로 확장하여, 0개 이상의 키-값의 쌍으로 객체로 확장시
developer.mozilla.org
function sum(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
console.log(sum(...numbers));
// expected output: 6
console.log(sum.apply(null, numbers));
// expected output: 6
다음과 같이 spread를 이용할때 적용되는 특성이 있다. 우선 spread를 하게 되면 해당 객체의 모든 property를 다시 불러오게 된다. 또한 이 과정에서 만약 spread에서 false 값이 리턴되게 되면 아무일도 일어나지 않는다고 한다. 이를 이용하여 undefined를 검사하는 코드를 짧게 단축 시킬 수 있다고 한다.
원래 코드
static fromJson(json) {
const addressType = json.addressType;
let department;
if (json.department) {
department = json.department;
}
return new Address({
addressType,
department
});
}
}
수정된 코드
static fromJson(json) {
return new Address({
...(json.addressType && { addressType: json.addressType }),
...(json.department && { department: json.department }),
});
}
}
수정된 코드를 보면 json.addressType이 만약 없는 경우 false 값이 나오게 된다. 그러면 &&에 의하여 자동적으로 해당 값은 아무일도 일어나지 않은 상태로 패스가 되게 된다. 만약 값이 있는 경우 해당 값이 Address의 생성자로 들어가게 된다. 이런 식으로 코드를 짜게 되면 불필요한 if문을 통한 빈값이 들어왔을 때의 검사를 생략할 수 있다.
'개발' 카테고리의 다른 글
Tool 소개) spectacle (0) | 2021.07.22 |
---|---|
typescript 커스텀 모듈 만들어서 사용하기 (0) | 2021.07.21 |
Jest 에러 상황 테스트 하는 법 (0) | 2021.07.19 |
Destructuring 구조분해 할당 (0) | 2021.07.16 |
객체지향 프로그래밍 하기2 (0) | 2021.07.16 |