基于TypeScript 的React 项目创建

 更新时间:2026年05月11日 09:55:21   作者:司南锤  
本文介绍了如何创建基于TypeScript的React项目,使用Create React App(CRA)工具可以快速搭建开发环境,通过--template typescript参数初始化TS项目,感兴趣的可以了解一下

React 是一个用于构建用户界面的强大 JavaScript 库。结合
TypeScript,您可以获得类型安全和更好的开发体验。本文将详细介绍如何从头开始创建一个基于 TypeScript 的 React
项目。

1. 为什么选择 TypeScript?

在深入创建项目之前,我们先了解一下为什么 TypeScript 对 React 项目如此有益:

  • 类型安全: TypeScript 允许您定义变量、函数参数和返回值的类型,从而在开发过程中捕获许多常见的错误。
  • 更好的代码可维护性: 明确的类型定义使代码更易于理解和维护,尤其是在大型团队项目中。
  • 增强的 IDE 支持: 现代 IDE(如 VS Code)对 TypeScript 有出色的支持,提供自动补全、代码导航和重构功能。
  • 提前发现错误: 在编译阶段就能发现潜在的错误,而不是在运行时才发现。

2. 环境准备

在开始之前,请确保开发环境中安装了以下工具:

  • Node.js: React 项目需要 Node.js 环境来运行。可以从 Node.js 官网 下载并安装。
  • npm 或 Yarn: 包管理器,Node.js 安装时通常会自带 npm。如果喜欢 Yarn,也可以单独安装。

3. 创建 React 项目

最简单和推荐的方式是使用 Create React App (CRA) 来创建一个基于 TypeScript 的 React 项目。CRA 是一个官方支持的工具,可以快速搭建一个配置完善的 React 开发环境。

使用 Create React App

在您的终端中运行以下命令:

npx create-react-app my-ts-react-app --template typescript
# 或者如果您使用 yarn
# yarn create react-app my-ts-react-app --template typescript
  • my-ts-react-app 是项目的名称,可以替换为任何想要的名称。
  • --template typescript 标志告诉 CRA 使用 TypeScript 模板来初始化项目。

命令执行完成后,CRA 会自动安装所有必要的依赖,并创建一个完整的 React 项目结构。

4. 项目结构概览

进入新创建的项目目录:

cd my-ts-react-app

您会看到类似以下的目录结构:

my-ts-react-app/
├── public/
├── src/
│   ├── App.css
│   ├── App.test.tsx
│   ├── App.tsx             // 核心组件
│   ├── index.css
│   ├── index.tsx           // 入口文件
│   ├── react-app-env.d.ts  // TypeScript 类型定义
│   ├── reportWebVitals.ts
│   └── setupTests.ts
├── .gitignore
├── package.json
├── README.md
├── tsconfig.json           // TypeScript 配置文件
└── yarn.lock (或 package-lock.json)

其中几个重要的文件和目录:

  • src/App.tsx:主要 React 组件,在这里编写大部分 UI 代码。
  • src/index.tsx:项目的入口文件,负责渲染根 React 组件。
  • tsconfig.json:TypeScript 的配置文件,在这里调整 TypeScript 的编译选项。
  • react-app-env.d.ts:包含 Create React App 自动生成的类型声明,通常无需修改。

5. 运行项目

现在,您可以运行您的 React 项目了:

npm start
# 或者
# yarn start

浏览器会自动打开 http://localhost:3000,并显示一个默认的 React 应用页面。

6. 编写 TypeScript React 代码示例

现在我们来修改 src/App.tsx,添加一些带有 TypeScript 类型的代码。

import React, { useState } from 'react';
import './App.css';

// 定义 Props 的接口
interface WelcomeProps {
  name: string;
  age?: number; // 可选属性
}

// 函数组件使用 React.FC<Props> 或 (props: Props) => JSX.Element
const Welcome: React.FC<WelcomeProps> = ({ name, age }) => {
  return (
    <div>
      <h1>Hello, {name}!</h1>
      {age && <p>You are {age} years old.</p>}
    </div>
  );
};

function App() {
  const [count, setCount] = useState<number>(0); // useState 明确指定类型

  const increment = (): void => { // 函数返回类型为 void
    setCount(prevCount => prevCount + 1);
  };

  return (
    <div className="App">
      <header className="App-header">
        <Welcome name="TypeScript User" age={30} />
        <Welcome name="Guest" /> {/* 不传入 age 也是允许的 */}
        <p>Count: {count}</p>
        <button onClick={increment}>Increment</button>
      </header>
    </div>
  );
}

export default App;

代码解释:

  • interface WelcomeProps: 我们定义了一个接口来描述 Welcome 组件接收的 props。这使得代码更具可读性,并且在您使用 Welcome 组件时会获得类型检查。
  • age?: number;: ? 表示 age 是一个可选属性。
  • const Welcome: React.FC<WelcomeProps> = (...): 推荐使用 React.FC(Function Component)泛型来为函数组件指定 props 类型。
  • useState<number>(0): 在使用 useState 时,您可以通过泛型参数明确指定 state 的类型,尽管 TypeScript 通常能够推断出简单类型的类型。
  • increment: (): void => { ... }: 显式声明函数的返回类型为 void,表示它不返回任何值。

7. 额外的 TypeScript 配置(可选)

tsconfig.json 文件是 TypeScript 项目的核心配置文件。CRA 已经为您配置了一个合理的默认值,但您可能需要根据项目需求进行一些调整。

一些常用的配置项:

  • "target": "es5": 指定编译后的 JavaScript 版本。通常保持为 es5 以获得更好的浏览器兼容性。
  • "jsx": "react-jsx": 指定 JSX 的处理方式。
  • "strict": true: 启用所有严格的类型检查选项,强烈推荐开启,这有助于编写更健壮的代码。
  • "baseUrl": "src": 允许您进行模块路径别名设置,例如 import SomeComponent from 'components/SomeComponent'。

可以查阅 TypeScript 文档 了解更多 tsconfig.json 的配置选项。

到此这篇关于基于TypeScript 的React 项目创建的文章就介绍到这了,更多相关TypeScript React 创建项目内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • react-router-dom v6 使用详细示例

    react-router-dom v6 使用详细示例

    这篇文章主要介绍了react-router-dom v6使用详细示例,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-09-09
  • react路由跳转传参刷新页面后参数丢失的解决

    react路由跳转传参刷新页面后参数丢失的解决

    这篇文章主要介绍了react路由跳转传参刷新页面后参数丢失的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • React中useMemo、useCallback的具体使用

    React中useMemo、useCallback的具体使用

    useMemo和useCallback是React中用于缓存计算结果和函数的Hooks,本文就来介绍一下useMemo、useCallback的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-01-01
  • 使用React封装一个Tree树形组件的实例代码

    使用React封装一个Tree树形组件的实例代码

    这篇文章主要介绍了使用React封装一个Tree树形组件的实例,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03
  • React封装UEditor富文本编辑器的实现步骤

    React封装UEditor富文本编辑器的实现步骤

    本文主要介绍了React封装UEditor富文本编辑器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-12-12
  • 详解React如何使用​​useReducer​​​高阶钩子来管理状态

    详解React如何使用​​useReducer​​​高阶钩子来管理状态

    useReducer是React中的一个钩子,用于替代 useState来管理复杂的状态逻辑,本文将详细介绍如何在React中使用 useReducer高阶钩子来管理状态,感兴趣的可以了解下
    2025-02-02
  • React配置代理方式(proxy)

    React配置代理方式(proxy)

    这篇文章主要介绍了React配置代理方式(proxy),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • React UI组件库ant-design的介绍与使用

    React UI组件库ant-design的介绍与使用

    Ant Design是阿里蚂蚁金服团队基于React开发的ui组件,主要用于中后台系统的使用,这篇文章主要介绍了React UI组件库ant-design的介绍与使用,需要的朋友可以参考下
    2023-12-12
  • nodejs和react实现即时通讯简易聊天室功能

    nodejs和react实现即时通讯简易聊天室功能

    这篇文章主要介绍了nodejs和react实现即时通讯简易聊天室功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • React实现双滑块交叉滑动

    React实现双滑块交叉滑动

    这篇文章主要为大家详细介绍了React实现双滑块交叉滑动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09

最新评论