본문으로 바로가기

TIL_230801 | 마감기한 잘 지키기

category Log/TIL 2023. 8. 1. 07:18


  WANNA REMEMBER  

📌 오호! 함수 body부분에서 객체 하나만 쓸 때는 괄호를 이용!

보통 이제 함수 body부분에서 코드가 한줄이면 {중괄호}를 생략할 수 있고,

만약에 {중괄호}가 들어가게 되면 중괄호 안에는 반드시 return을 써주어야한다.

key:value로 이루어진 객체도 {중괄호}로 되어 있기 때문에 

함수 body부분에 그 한줄의 코드로서 객체data 하나만 달랑 쓰게 되면 함수가 객체로 인식하기 보다는 자기 body의 {중괄호} 자체로 인식하는 것 같음!

그래서 key:value 객체데이터 하나만 써주려면 (괄호)로 묶어서 사용하면 된댱!!

나는... 처음 알았어...ㅎㅎㅎㅎ

 

📌  redux에 typescript 적용

react typescript 프로젝트에 redux받아서 todolist 만들고 있는데 reducer 만드는 부분에서 문제가 생겼었다.

오류 메시지를 봐도 문제가 뭔지 모르겠어서 튜터님을 찾아가 질문을 했다.

 

문제가 발생했던 이유는 함수를 할당받고 있는 변수에 type지정(배열로)을 잘못해주고 있었기 때문이었고, 내가 저렇게 오류를 냈던 이유는 함수선언식에서 type을 표시할 때는 다음과 같이 표시를 하니까    function 함수이름2 (매개변수 : 매개변수타입):반환값타입 { return main logic }    const 함수이름 = () => {} 이런 함수 표현식이 있을 때도    const 함수이름2 : 반환값타입 = (매개변수 : 매개변수타입) => { return main logic }    이렇게 된다고 잘못 오해하고 있었기 때문에 발생했던 문제였다. 후자가 잘못되었던 이유는 변수명 함수이름2에 type지정을 잘못해주었기 때문이다. 함수이름2에는 함수가 할당되고있기 때문에 내 문제되는 코드에서 type지정도 함수type으로 해주어야하는데 배열type을 해주어서였다. 

 

문제를 해결하기 위해서는 1.아예 함수이름2와 반환값에 대해 type지정을 명시적으로 해주지 않고 이런식으로 매개변수 타입과 return값들을 통해 typescript가 타입추론을 할 수 있도록 하는 방법을 사용하거나  2. 함수이름2의 타입을 함수type으로 적어주거나 3.    function 함수이름2 (매개변수 : 매개변수타입):반환값타입 { return main logic }   이렇게 쓰는 방법 등이 있다.

 

만약 타입을 명시적으로 적지 않고 typeScript가 알아서  타입추론을 통해 판단하게 만든다면 충분히 타입추론을 할 수 있는 형태를 잘 만들어주어야하고, 마우스 hover를 통해서 내가 의도했던 타입으로 잘 추론되었는지 꼭 확인을 해보아야한다고 튜터님이 말씀하셨다.

 

[오류와 관련없는 이야기]

1.  튜터님은 내가 redux toolkit말고 redux로 typescript를 사용하는 것을 보고, 사용해도 되지만 요즘에 redux 에서 오리지날 redux에 대한 지원이??? 줄어들고 있다고 하셨다. redux toolkit이 훨 유용하기에.. 오리지날 redux를 배우는 것은 just redux toolkit을 잘 써먹기 위해 원리?파악하는 용도라고... (근데 사실 나는 A로 듣고 B로 이해하니까 튜터님이 한 말을 그대로 옮기고 있다고 100%확신은 못하니 알아서 걸러 들으세요들)  암든 그러셨다.

2.  튜터님은 text editor에서 코드 오류를 잡아주는 걸 잘 읽고 해석할 줄 알아야한다고 하셨다. 


  DONT UNDERSTAND  

redux configStore.ts file에서 어떤 기준으로 type 설정을 하는지도 잘 모르겠움.. 일단 학우분의 코드.....참고 하고 오늘 하루 끝날 때 쯤 확인하자