티스토리 뷰

리액트와 타입스크립트를 이용해 만들 예정이기 때문에, 먼저 타입스크립트를 깔아야 한다.

npm install typescript --save-dev
yarn add typescript --dev

둘 중 하나를 사용해서 깔아주면 된다. 그리고 타입스크립트를 사용하는 리액트 프로젝트를 만들면 된다.

npx create-react-app 프로젝트이름 --template=typescript
yarn create react-app 프로젝트이름 --template typescript

그런데 문제가 있었다. 타입스크립트를 써야 한다는 걸 중간에 떠올리고, 그냥 리액트 프로젝트를 만들어버린 거다.

 

이미 있는 리액트 프로젝트에 타입스크립트를 추가하려면 리액트 프로젝트에 이렇게 추가해준다.

npm install --save typescript @types/node @types/react @types/react-dom @types/jest
yarn add typescript @types/node @types/react @types/react-dom @types/jest

이제 정말 됐겠지? 하고 봤는데 이미 작성한 코드들에 수많은 오류가 떠 있었다.

타입을 지정하지 않은 코드는 타입을 지정해주면 사라졌는데, 문제는 이거였다.

 

'--jsx 플래그가 사용되지 않았습니다.'

 

이게 왜 설정되지 않았다는 거지? 하면서 검색을 해보니... 아주 간단했다. tsconfing.json에 jsx설정을 안 해둔 거였다... compilerOption 안에 다음을 추가해주면 된다.

"jsx": "react-jsx"

그런데 또 오류가 있었다.

이 정도면 그냥 리액트 프로젝트를 지우고 새로 만드는 게 빨랐을 것 같다.

 

바로 이미지 import가 안 되는 현상이었는데, 해당 형식 선언을 찾을 수 없다고 나왔다.

이건 여러 방법이 있는 것 같았는데, 어느 한 블로그에서 해결 방법을 찾았다.

 

우선 src 폴더에 custom.d.ts라는 파일을 만든다. 그리고 그 안에 다음과 같이 입력한다.

declare module "*.jpg";
declare module "*.png";
declare module "*.jpeg";
declare module "*.gif";

이러면 이제 오류가 없어진다.

 

그리고 마지막 오류.

index.tsx에 발생한 오류였다.

 

'HTMLElement | null' 형식의 인수는 'Element | DocumentFragment' 형식의 매개 변수에 할당될 수 없습니다.'

 

보아하니, 들어간 인수가 null이 될 수도 있으니 들어갈 수 없다고 하는 것 같다.

이를 해결하는 방법을 두 개 찾았는데...

 

1. as HTMLElement 사용.

2. ! 사용.

 

1번은 무조건 이 인수를 HTMLElement라고 설정하는 방법이고, 2번은 값이 무조건 할당되어 있다고 말해주는 방법이다.

어느 걸 사용해도 똑같으니, 좀 더 짧은 !를 써서 해결했다.

 

 

 

 

타입스크립트를 좀 더 써봐야겠다. 잘 될 지는 모르겠지만... 열심히 하는 수밖에.

'개인 프로젝트 > Finding-Item' 카테고리의 다른 글

개인 프로젝트 2.  (0) 2023.02.15
개인 프로젝트 0.  (0) 2023.02.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함