es-toolkit
저는 중고거래 사기를 당한 적이 있습니다.
사기를 당한 품목은 25만원 상당의 오디오 인터페이스 였습니다. 물품의 중고가에 비해 많이 싸지도 않지만 비싸지도 않은 가격에 저는 돈을 입금했고 결국 판매자는 택배를 발송하지 않았습니다.
전화번호와 계좌번호도 검증해보고 거래를 했지만 판매자는 주기적으로 통장과 번호를 바꿔서 사기를 치는 상습범이었고 저는 통장과 번호를 바꾼 다음 걸린 첫번째 타겟이었던 것이었습니다...
심지어 사기꾼이 올린 다른 판매글에 사기를 당한 다른 피해자들이 이 글은 사기라고 댓글을 달기 시작했지만
사기꾼은 오히려 그 피해자들에게 "너희 집주소 알고 있으니까 계속 방해하면 각오해라"라는 답글을 달고 있었습니다.😨
다들 이런 전문적으로 사기를 치는 상습범은 잡히지 않는다고 말했습니다.
하지만 이런 상황에서 제 잃은 돈을 그대로 돌려준곳은 토스였습니다. 토스에서는 중고거래 시에 사기 피해를 당했을 때 토스로 송금을 했다면 1회에 한해서 50만원까지 피해 금액을 돌려주는 제도가 있었습니다. 저는 처음에 정부 기관도 아닌 곳에서 어떻게 이런게 가능하지? 라는 생각을 했습니다. 하지만 실제로 돈을 돌려받고 들었던 깨달음은 아 이런 IT 기업에서도 사회에 긍정적인 영향을 주는 방식은 얼마든지 있구나 라는 생각을 하게 되었습니다. 이때부터 저는 세상에 긍정적인 영향을 주는 개발자가 되어보자는 목표를 가지게 되었습니다.
이런 생각을 가지고 있던 중에 오픈 소스들을 둘러보다 토스의 es-toolkit을 발견하게 되었습니다. 저는 토스에서 받았던 은혜(?)를 조금이라도 갚기 위해 기여에 도전하게 됩니다.
es-toolkit이란?
es-toolkit은 토스에서 개발한 높은 성능과 작은 번들 사이즈, 강력한 타입을 자랑하는 현대적인 JavaScript 유틸리티 라이브러리입니다.
2025년 4월 기준 주간 NPM 다운로드 수는 약 100만입니다.
자세한 설명은 깃허브를 참고해 주시길 바랍니다!
해결한 이슈
제가 기여한 이슈는 다른 자바스크립트 유틸리티 라이브러리인 lodash에서 es-toolkit으로 쉽게 마이그레이션 하기 위한 compat이라는 레이어를 추가하는 것에 관한 이슈였습니다.
저는 lodash의 기능 중에서 functions
라는 기능을 es-toolkit에서 구현하는 작업을 진행했습니다.
작업을 요약하면 lodash의 기능을 es-toolkit에서 구현
+ 타입스크립트 지원
+ 테스트코드 추가
+ 벤치마크 추가
+ 추가한 기능에 대한 Docs 작성
까지 진행했습니다.
구현
functions
라는 기능은 정말 단순합니다.
객체의 속성 중 값이 함수인 속성의 이름들로 구성된 배열을 생성합니다.
중요한 포인트는 '자체 열거 가능한 속성'이라는 것입니다.
즉 객체가 직접 소유한 속성과 문자열 키를 가진 속성만 반환합니다.
상속받은 속성이나 Symbol
키를 가진 속성은 제외합니다.
후기
es-toolkit의 전체 기능 중에서는 정말 작은 하나의 기능을 추가한 것이지만 아무리 작은 기능이라도 제가 추가한 기능을 다른 사람들이 사용한다는 것 자체가 정말 뿌듯한 일이라고 생각합니다.
제가 작성한 코드가 많은 사람들이 사용하는 라이브러리의 메인 브랜치에 머지되는 순간은 정말 가슴 떨리는 순간이었습니다.