포시코딩

1월20일 - 오버로딩(overloading) 본문

TIL

1월20일 - 오버로딩(overloading)

포시 2023. 1. 20. 09:22
728x90

사용 방법에 따른 메소드의 변화

다른 팀 프로젝트를 리뷰하면서

bcrypt 사용하는 부분에 대해 나와 같은 라이브러리를 가져다 쓰는데

리턴받는 값이 다르다는걸 알았다.

 

일단 사용하는 형태가 다르긴 했다.

나는 new Promise를 선언해 그 안에서 사용했고

다른 팀은 await을 붙여 사용했다.

아래는 그 코드다.

 

내 코드

  encryptPassword = async (password) => {
    // ...생략
    return new Promise((resolve, reject) => {
      bcrypt.hash(password, saltRounds, (err, hash) => {
        // ...생략
      });
    });
  };

 

다른 코드

const encryptPassword = await bcrypt.hash(password, saltRounds);

난 이제껏 콜백함수를 사용해야 암호화된 값을 받을 수 있는줄 알았는데

그냥 단순히 await 붙이면 바로 리턴 받을 수 있었다.

 

한번 자세히 들여다 봤다.

 

 

콜백함수로 받는 경우

 

promise로 리턴되어 await을 써 받는 경우

알고보니 오버로딩 되는 함수로 

파라미터를 어떻게 요청하냐에 따라 다른 형태를 띄는걸 알 수 있었다.

(지금와서 보니 (+1 overload) 라고 적혀 있는게 이걸 의미하는거로 생각된다.)

 

해당 함수를 자세히 까본 내용.

 

타입스크립트에 대해 배우는 지금에 와서야 눈에 들어오는 내용들이 있다.

앞으로는 라이브러리 기능을 가져다 쓰게 되더라도

이처럼 어떤 형태로 써야 하는지 더 좋게 쓸 방법이 없는지 확인하고 써야겠다.

 

원래는 다른 부족한 팀원들을 위해 시작한 프로젝트 까보기 스터디 였는데

나한테 득이 되는게 너무 많아 너무 잘했다고 생각된다.

 

이래서 개발자는 다른 사람의 코드를 까봐야 실력이 는다고 하는 것 같다.

앞으로도 기회가 될 때 마다 자주자주 다른 사람은 어떻게 코딩했는지 까보는 취미를 가져야 겠다.

728x90

'TIL' 카테고리의 다른 글

1월22일 - helmet  (1) 2023.01.22
1월21일 - TypeScript 기본 세팅  (0) 2023.01.21
1월19일 - Sequelize Transaction  (0) 2023.01.19
1월18일 - reversed, map  (0) 2023.01.18
1월17일  (0) 2023.01.18