npm install --save-dev @types/react-query 명령어 실행 시, 아래와 같은 에러가 발생함:
npm error ERESOLVE could not resolve
...
Conflicting peer dependency: typescript@5.8.3
peerOptional typescript@"^3.2.1 || ^4" from react-scripts@5.0.1
TypeScript 프로젝트에서는 다음 세 가지 버전이 서로 영향을 주고 받는다:
| 구분 | 설명 | 지금 내 상황과의 연관성 |
|---|---|---|
| ① 라이브러리 버전 | 예: react-scripts@5.0.1프로젝트 내부의 빌드 및 실행 도구 | CRA(Create React App)로 프로젝트를 시작했기 때문에 react-scripts가 자동 설치됨. 해당 버전은 TypeScript 5를 지원하지 않음 |
| ② 타입 선언 버전 (@types) | 예: @types/react-query타입스크립트에서 사용할 수 있도록 타입 정보만 제공하는 라이브러리 | 설치하려 했지만 TypeScript와 react-scripts의 충돌로 인해 설치 실패 |
| ③ TypeScript 버전 | 예: typescript@5.8.3내가 설치한 최신 TS 버전 | 최신 버전이지만 react-scripts@5.0.1에서 요구하는 버전보다 높아서 충돌 발생 |
타입스크립트 버전이 너무 높음
→ react-scripts가 이걸 감당하지 못함
→ @types/react-query 같은 타입 선언 설치도 실패
react-scriptsreact-scripts라는 패키지를 사용해 빌드, 테스트, 타입 검사 등을 자동으로 해준다.react-scripts@5.0.1은 TypeScript 5버전을 아직 지원하지 않는다.react-scripts가 허용하는 TypeScript 버전 범위는 다음과 같다:^3.2.1 || ^4 (즉, TS 3 또는 TS 4.x까지만 가능)너는 최신 버전인 TypeScript 5.8을 설치했는데,
CRA 내부의 react-scripts는 이렇게 말하는 거야:
react-scripts: "나 TS 4까지만 쓸 수 있어!"
TypeScript 5.8: "난 최신 버전이야!"
→ 둘이 버전이 안 맞아서 싸움 발생 → npm install 실패
npm uninstall typescript
npm install --save-dev typescript@4.9.5
npm install --save-dev @types/react-query
react-scripts@5.0.1과 TypeScript 버전이 일치하므로 충돌 없이 설치 가능!Vite, Next.js, Parcel 등으로 넘어가는 중이다.react-scripts)@types/react-query)typescript@5.8)