인프런 커뮤니티 질문&답변

noAD님의 프로필 이미지
noAD

작성한 질문수

실전 리액트 프로그래밍

서버 API 호출하기

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

작성

·

521

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
질문자

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

0

이재승님의 프로필 이미지
이재승
지식공유자

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

noAD님의 프로필 이미지
noAD

작성한 질문수

질문하기