231110(금)
🌱 성장일지 8.0
책 행복한 이기주의자(웨인 다이어)
의 내용에 자극받아 시작하는 소박한 성장기록
- 살아있는 꽃과 죽은 꽃은 어떻게 구별하는가?
- 성장하고 있는 것이 살아 있는 것이다.
- 생명의 유일한 증거는 성장이다!
⚛ (8.0)<완전 개편> 그 날의 키워드 중심으로 간단하게 정리하되 매일 꾸준히 작성할 수 있는 공간을 만들어보자.
면접 톺아보기
오늘도 좋은 기회로 보고 온 면접에서 다시 생각해보고 정리해두면 좋을 내용들을 정리해두려고 한다.
타입스크립트란 무엇일까?
사실 이건 정말 정답이 없는 것 같다.(물론 자바스크립트의 슈퍼셋이기도 하고 동적 언어인 자바스크립트를 정적 언어처럼 사용할 수 있게 해주는 언어이기도 하다.)
내가 평소에 느끼는 바를 말씀드렸다. 정말 단순한 비유지만 자바스크립트를 라이브러리라고 한다면 타입스크립트는 프레임워크라고 생각한다. 엄밀히 그 용어의 정의가 부합하는 건 아니지만, 개발자 경험면에서 그렇게 많이 느낀 것 같다. 특히 프론트엔드 개발자인 나에게 있어 자바스크립트는 뭔가 라이브러리인 리액트같은 자유로우면서도 어디로 튈지모르는, 뭔가 하나하나 내가 다 설정해야하는 느낌이라면 타입스크립트는 프레임워크인 Next.js와 같이 어딘가 엄격하고 많은 걸 제공하지만 한편으로는 조금 억압되어있다..? 통제되어있다..?의 느낌이 많이 들었던 것 같다.(나는 둘다 정말 좋아한다. ㅎㅎ)
면접에서 좋은 표현일지는 모르겠지만, 내가 전달하고자하는 느낌과 비유를 더 명확하게 말씀드리는 게 좋은 거 같다. 그렇게 표현하는 것조차 나라는 사람을 알릴 수 있고 회사와의 핏을 볼 수 있는 기회라고 생각한다!
Context API와 전역 상태 관리 라이브러리
이 둘의 차이는 뭘까? 일단 엄밀하게는 Context API + useState or useReducer
과 전역 상태 관리 라이브러리
를 비교하는 게 맞다고 생각한다.(전역 상태의 관점에서..!) 그치만 Context API 자체는 엄밀히 말하면 props drilling을 줄이기 위해 부모 컴포넌트의 props를 멀리 있는 자식 컴포넌트에게 Context(문맥)
의 형태로 전달하기 위한 API일 뿐이다. 이제 여기에 state 혹은 state를 handle하는 함수를 전달함으로써 전역 상태 관리의 역할을 할 수 있게 된다.
기술적으로는 Context API와 useState를 사용하여 전역 상태를 관리하게 되면 해당 state를 사용하는 컴포넌트뿐 아니라, Context를 제공하는 Provider로 감싸진 모든 컴포넌트가 리렌더링이 일어난다. 반면 전역 상태 관리 라이브러리를 사용하면 해당 state를 사용하는 컴포넌트만 리렌더링이 일어난다. 그렇기 때문에 전역 상태 관리 라이브러리를 사용하는 것이 더 효율적이다.
전역 상태의 단점으로 휘발성이 있는데...!!! 이 부분은 어떻게 해결할 수 있을까?
먼저 휘발성이 뭘까? 단순하게 말하면 개발한 서비스를 새로고침했을 때, 메모리에 저장될 뿐인 전역 상태는 초기화된다는 점이다. 그러면 이런 상태를 유지하기 위해서 우리는 어떻게 할 수 있을까? 프론트 입장에서 바로 떠오르는 건 브라우저의 storage(local, session, cache)와 같은 저장소를 사용하는 방법이 있을 것이다. 또 뭐가 있을까... 어떻게 보면 url의 params도 상태를 유지하는 방법이 될 수 있을 것 같다.(좋은 방법인지는 모르겠지만...) 그 다음은 서버단에 상태를 저장하는 것인데, 사실상 서버 상태라면 api method를 통해서 db에 저장하게끔 하는 게 맞고 클라이언트 상태라면 서버에서 클라 상태를 알고 있는 건 좋은 코드가 아니라 생각하기 때문에 좋은 방법이 아닌 것 같다.
📝 회고
이렇게 표현하면 좀 그렇지만, 면접을 보는데 두근거리고 즐거웠다. 편하고 즐겁게 이야기해주신 면접관분들도 정말 좋으신 분들이었고 내가 느낀 회사의 분위기도 좋았다. 그러다보니 자연스럽게 면접에 대한 두려움으로 인한 떨림이 어딘가 벅찬 두근거림으로 바뀌어있었던 것 같다. 좋은 결과가 있었으면 좋겠고 앞으로도 좋은 분들과 좋은 이야기를 공유하고 좋은 경험을 쌓을 수 있었으면 좋겠다. 그 사이에서 나도 누군가에게 더 좋은 영향을 줄 수 있는 좋은 사람이 될 수 있길 바란다!!!