• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

Property 'search' does not exist on type 'DefaultRootState'.

20.10.22 08:32 작성 조회수 406

2

일단 기능 자체는 잘작동합니다. 데브툴즈에서도 state 입력되는 것 확인했구요

다만 useSelector에서 state의 search가 속성으로 있다는 것을 인식을 못하는것 같습니다.

useSelector구문 위에 // @ts-ignore 추가하거나 아님 react-redux index.d.ts DefaultRootState 수정해서 멤버를 수정해야 안뜨는데 강사님 화면에서는 안뜨는데 저는 저런 에러 로그가 뜨는건지 신경이 쓰입니다.

답변 3

·

답변을 작성해보세요.

2

안녕하세요
해당 에러는 타입스크립트가 보여주는 에러입니다

mac 사용자 기준으로 설명드릴게요
userSelector에 마우스 커서를 올리고 command 키를 누른 상태에서 클릭해주세요
아래 경로에 있는 파일이 열릴거에요
(안열린다면 수동으로 열어주세요)
/Users/{사용자이름}/Library/Caches/typescript/3.9/node_modules/@types/react-redux/index.d.ts

그리고 아래 코드를
export function useSelector<TState = DefaultRootState, TSelected = unknown>(
아래처럼 수정해주세요
export function useSelector<TState = any, TSelected = unknown>(
이렇게 하면 아마 에러는 사라질 것 같아요

에러가 나는 이유는,
jsconfig.json 의 checkJs=true 설정 때문에 vscode가 타입스크립트를 이용해서 타입 검사를 하는데요
state의 타입을 정의하지 않아서 발생하는 에러에요

위에 any라고 입력한 것은 state의 타입을 신경쓰지 않겠다라는 의미로 이해하시면 될 것 같아요
참고로 자바스크립트에서 타입을 제대로 입력하려면 JSDoc 을 꼼꼼하게 작성해야하는데요
사실 그렇게 하는 것 보다는 타입스크립트로 작성하는 게 더 낫긴합니다

1

noAD님의 프로필

noAD

질문자

2020.10.23

오 저런 방법도 있겠군요. 다음번에는 리액트에서 타입스크립트 써서 만드는 강의도 제작해주세요~~

0

네 다음 강의는 리액트 + Next.js + 타입스크립트 조합으로 해보려고 생각 중입니다^^