[TypeScript] React에서 사용하기_1편

2022. 7. 9. 16:11·TypeScript/기초
반응형

1. React에 TypeScript 추가하기

신규 프로젝트 

npx create-react-app 프로젝트명 --template typescript

프로젝트를 만들 때 TypeScript를 자동으로 세팅해주는 명령어이다. 

기존 create-react-app에 --template typescript 만 추가된 명령어다. 

 

기존 프로젝트

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

패키지를 다운받고 js 파일을 ts, jsx 파일을 tsx 파일로 변경하고 프로젝트를 진행하면 된다. 

하지만 파일을 변경하고 수정하는 작업이 오래걸려서 가능하면 신규 프로젝트를 만드는 방식이 안전하다. 

 

2. React에서 사용하기 

TypeScript를 추가한 React 프로젝트는 기본적인 사용방식은 똑같다. 하지만 컴포넌트 파일이 js와 jsx가 아닌 ts,tsx이다. 

추가로 함수, 컴포넌트, state, props의 타입체크를 해줘야 에러가 나지 않는다. 

 

1. JSX 타입 지정

React에선 변수나 자료에 <div></div>같은 JSX를 담아서 쓸 수 있다. 

let box :JSX.Element = <div></div>
let button :JSX.Element = <button></button>

JSX 자료에 타입을 지정하고 싶다면 JSX.Element 타입을 사용하면 된다. 

 

정확하게 타입 지정을 하고 싶다면 div, a, h4 ... 같은 기본 태그들은 JSX.IntrinsicElements 라는 타입을 사용하면 된다. 

let box :JSX.IntrinsicElements['div'] = React.createElement('div');
let button :JSX.IntrinsicElements['button'] = <button></button>

 

2. 컴포넌트 타입 지정

function App() {
    return (
    	<div>Hello! World!</div>
    )
}

React의 컴포넌트에는 타입 지정을 어떻게 할까? 

함수이기 때문에 파라미터와 return 타입을 지정하면 된다. 

type AppProps = {
    name :string;
}

function App (props: AppProps) :JSX.Element {
    return (
    	<div>{props.name}</div>
    )
}

props 파라미터는 어떻게 넘겨줄지 정해서 타입 지정해주면 되고, 

return 타입의 경우 JSX.Element를 넣어주면 된다. 하지만 생략해도 자동으로 타입이 지정되긴 한다. 

 

3. state 타입 지정

일반적인 state를 만들 땐 자동으로 타입이 할당되어서 걱정할 필요는 없다. 

const [user, setUser] = useState<string | null>('kim');

정말 흔치 않지만 state 타입이 나중에 변화할 수 있다면 Generic, 즉 <> 사용해서 타입을 넣어주면 된다. 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'TypeScript > 기초' 카테고리의 다른 글

[TypeScript] Tuple Type  (2) 2022.07.10
[TypeScript] React에서 사용하기_2편  (1) 2022.07.10
[TypeScript] Generic  (1) 2022.07.08
[TypeScript] Protected & Static  (1) 2022.07.07
[TypeScript] Public & Private  (1) 2022.07.07
'TypeScript/기초' 카테고리의 다른 글
  • [TypeScript] Tuple Type
  • [TypeScript] React에서 사용하기_2편
  • [TypeScript] Generic
  • [TypeScript] Protected & Static
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    식물
    next.js
    CCNA
    webpack
    영어회화
    덤프
    바질
    리얼클래스
    자바스크립트
    typescript
    타입스크립트
    프로그래머스
    리액트
    javascript
    ReactNative
    타일러영어
    ChatGPT
    Node.js
    네트워크
    react
    네이버 부스트캠프
    다이소
    바질 키우기
    redux
    CSS
    리얼학습일기
    Docker
    알고리즘
    영어독학
    Babel
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[TypeScript] React에서 사용하기_1편
상단으로

티스토리툴바