티스토리 뷰

카테고리 없음

typescript optional 오남용 금지

나를찾는아이 2023. 3. 13. 15:50
728x90
반응형

optional은 코딩에 있어서 굉장한 편리함을 줍니다

 

그런데 가끔 optional을 굳이 사용하지 않아도 되는곳에도 optional을 오남용하는 곳을 볼수 있습니다

 

 

뭐 이런 함수가 있다고 생각해봅시다

 

세번째 매개변수인 date를 optional로 설정했습니다

 

function createTask(title: string, description: string, date?: Date) {
   ...
   const createdAt = date || new Date();
   ...
}

createTask("우유2개구입", "할인쿠폰 사용할것");

 

그리고 함수 내부코드에서는 date의 값이 있는지 없는지를 판별하여 없는 경우 현재시간을 사용하여 나머지 코드에서 활용합니다

 

date를 optional로 꼭 해야만하나요?

 

다른 방법은 없을까요?

 

이렇게 해보면 어떨까요?

 

function createTask(title: string, description: string, date: Date = new Date()) {
   ...
   // 아무런 조치를 할필요없음
   ...
}

createTask("우유2개구입", "할인쿠폰 사용할것");

 

date 매개변수에 기본값으로 new Date()를 세팅하고

 

optional 하지 않도록 변경했습니다

 

 

코드가 좀 더 심플해집니다

 

date가 undefined 인지 체크할필요가 없습니다

 

 

 

 

또 다른 예를 들어볼까요

 

배열을 인자중의 하나로 받는 함수가 있습니다

 

function createTask(title: string, description: string, subTasks?: string[]) {
   ...
}

 

여기서 subTasks 변수를 사용하는것은 좀 더 번거롭고 귀찮습니다

 

subTasks 1개이상의 원소가 있는지 체크하려면 subTasks가 undefined인지 체크한다음에 length를 또한번 체크해야합니다

 

optional의 불편함이죠

 

function createTask(title: string, description: string, subTasks: string[] = []) {
   ...
}

 

 

이렇게 바꿔보면 어떨까요?

 

subTasks.length를 아무런 걱정없이 호출해도 됩니다

 

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함