대부분의 경우 Create React App을 사용하여 프로젝트를 생성할 때 타입스크립트를 선택할 수 있습니다:
npx create-react-app my-app --template typescript
이 명령을 실행하면 타입스크립트를 기반으로 한 리액트 프로젝트가 생성됩니다.
기존의 JavaScript 기반 리액트 프로젝트에 타입스크립트를 추가하려면 다음 단계를 따릅니다:
npm install --save typescript @types/node @types/react @types/react-dom @types/jest
{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "es2015"],
"jsx": "react",
"strict": true,
"esModuleInterop": true
}
}
타입스크립트를 사용하면 각 컴포넌트의 props와 state에 대해 명확하게 타입을 정의할 수 있습니다.
import React from 'react';
interface Props {
name: string;
age: number;
}
const MyComponent: React.FC<Props> = ({ name, age }) => {
return (
<div>
<p>Name: {name}</p>
<p>Age: {age}</p>
</div>
);
};
export default MyComponent;
import React, { Component } from 'react';
interface Props {
name: string;
age: number;
}
interface State {
count: number;
}
class MyComponent extends Component<Props, State> {
state: State = {
count: 0
};
render() {
const { name, age } = this.props;
const { count } = this.state;
return (
<div>
<p>Name: {name}</p>
<p>Age: {age}</p>
<p>Count: {count}</p>
</div>
);
}
}
export default MyComponent;
함수형 컴포넌트에서 Hooks를 사용할 때도 각 Hook에 대한 타입을 정의할 수 있습니다.
import React, { useState } from 'react';
interface Props {
initialValue: number;
}
const Counter: React.FC<Props> = ({ initialValue }) => {
const [count, setCount] = useState<number>(initialValue);
const increment = () => {
setCount(prevCount => prevCount + 1);
};
return (
<div>
<p>Count: {count}</p>
<button onClick={increment}>Increment</button>
</div>
);
};
export default Counter;
타입스크립트를 사용하면 코드의 안정성을 높이기 위해 다양한 타입 추론 기능과 인터페이스, 타입 별칭(alias) 등을 활용할 수 있습니다. 이를 통해 코드의 가독성과 유지보수성을 높이며, 개발 과정에서 발생할 수 있는 오류를 사전에 방지할 수 있습니다.