웹 풀스택

타입스크립트로 리액트 시작하기

kevinmj12 2025. 4. 7. 17:05

리액트로 프로젝트를 생성하기 위해 기존에 사용하던 명령어는 다음과 같다.

npx create-react-app my-app

 

위 명령을 실행하면 필요한 라이브러리들을 자동으로 설치해준다.

또한 폴더 구조와 여러가지 js 파일들도 생성해주어 npm start 명령을 통해 예제 페이지를 확인할 수 있도록 해준다.

 

그런데 타입스크립트를 사용하기 위해서는 위의 js 파일들이 필요하지 않고, ts파일들이 필요하다.

친절하게도, 이런 경우를 위한 프로젝트 명령어가 존재한다.

npx create-react-app my-app --template typescript

 

위 명령어를 통해 프로젝트를 생성하면 아래와 같이 모든 js파일들이 tsx파일로 생성된다!

 

tsx

tsx파일은 html 컴포넌트를 사용할 수 있는 ts의 확장된 파일이다.

만약 ts파일에서 리액트 컴포넌트들을 사용하기 위해서는 다음과 같이 코드를 작성해야 한다.

function App() {
  return React.createElement(
    "div",
    null,
    React.createElement("p", null, "Hello React!")
  );
}

html 태그를 사용하려 할 때마다 React.createElement()로 생성하여 매우 번거롭고 코드가 더러워진다.

반면 tsx파일에서는 다음과 같이 코드를 작성할 수 있다.

 

function App() {
  return (
    <div>
      <p>Hello React!</p>
    </div>
  );
}

두 코드가 똑같은 역할을 한다는 것을 믿기 어려울 정도로 간결하고 이해하기 쉬워졌다.

 

css 연결

리액트에서는 html-css를 연결하는 과정과 비슷하게 tsx-css를 연결할 수 있다.

// App.js
import React from "react";
import "./App.css";

function App() {
  return (
    <div className="App-header">
      <p className="header-p">Hello React!</p>
    </div>
  );
}

export default App;
/* App.css */
.App-header {
  background-color: #282c34;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: calc(10px + 2vmin);
  color: white;
}

.header-p {
  font-size: 40px;
  background-color: pink;
  color: white;
  padding: 10px;
}

import "./App.css"를 통해 css파일을 import한 후 className을 통해 쉽게 컴포넌트의 스타일을 설정해줄 수 있다.

 

변수 사용

function App() {
  const name = "React";
  const style = {
    backgroundColor: "skyblue",
    fontWeight: "bold",
    padding: "20px",
  };
  return (
    <div style={style} className="App-header">
      <p className="header-p">Hello {name}</p>
    </div>
  );
}

리액트에서도 html과 비슷하기 컴포넌트 내에서 {}를 통해 변수를 사용할 수 있다.

위 코드에서는 name, style을 생성하여 style={style}, Hello {name}과 같이 사용하였다.