데이터를 props로 넘겨주거나 HOC나 HOF를 활용하면서 타입스크립트로 타입을 지정해줄 때 정해진 타입 외에는 검색이 쉽지않아서 any로 일단 처리하고 넘어간 경우가 꽤 있었는데 오늘 배운 걸로 어느 정도 해결이 될 것 같다.
💡 any VS unknown
const getUnknown = (args: unknown) => {
if (typeof args === "number") {
const answer = args + 2;
return answer;
} else {
return "숫자를 넣어주세요";
}
};
//타입 설정은 unknown으로 했지만
//myResult2 타입은 number | "숫자를 넣어주세요" 로 설정된다.
const myResult2 = getUnknown("철수");
console.log(myResult2);
💡 Generic Type : 어떤 값이 들어올 지 확정되지 않았지만 값이 들어갔을 때 타입을 지정하고 (예 - number), 이 정보를 나중에 반영한다.
// <T>,<U>라는 타입을 지정해준 뒤,
export function firstFunc3<T>(args1: T) {
return function secondFunc3<U>(args2: U): [T, U] {
return [args1, args2];
};
}
const resultFunc3 = firstFunc3("영희")(10);
//결과적으로 인수로 데이터를 넣으면 해당 데이터에 대한 타입 정보가 반영됨.
// -> const resultFunc3: [string, number]
console.log(resultFunc3);
HOC / HOF를 사용할 때 화살표 함수로 generic type을 주면 withAuth.tsx 에서 타입을 지정해줄 수 있겠다. 아직 빈 객체를 왜 사용할 수 없는지 더 확인이 필요하지만..
👩🏻💻 오늘의 TIL ...
배운지 며칠 안됐지만 어쨌든 아직 함수 안에 함수 형식으로 컴포넌트 연결하는 부분이 부족하다. 컴포넌트 연결에 대해 좀 더 신경 쓸 필요가 있겠다.
오늘 또 한가지. 오늘 브라우저 저장소에 대해 더 자세히 배웠다. 이 부분 추가적으로 정리하고 다시 코드를 적어보면서 응용해보자.
타입스크립트 공식 문서 참고 docs -any/ unknown, docs - generic, playground