基于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中useCallback 的基本使用和原理小结

    React中useCallback 的基本使用和原理小结

    React的useCallback Hook用于缓存函数定义,避免组件重渲染时重复创建函数实例,本文就来介绍一下React 中 useCallback 的基本使用和原理,感兴趣的可以了解一下
    2025-11-11
  • ReactNative点击事件.bind(this)操作分析

    ReactNative点击事件.bind(this)操作分析

    这篇文章主要为大家介绍了ReactNative点击事件.bind(this)操作分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • react中实现拖拽排序react-dnd功能

    react中实现拖拽排序react-dnd功能

    这篇文章主要介绍了react中实现拖拽排序react-dnd功能,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • React路由渲染方式与withRouter高阶组件及自定义导航组件应用详细介绍

    React路由渲染方式与withRouter高阶组件及自定义导航组件应用详细介绍

    这篇文章主要介绍了React路由三种渲染方式、withRouter高阶组件、自定义导航组件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-09-09
  • React替换传统拷贝方法的Immutable使用

    React替换传统拷贝方法的Immutable使用

    Immutable.js出自Facebook,是最流行的不可变数据结构的实现之一。它实现了完全的持久化数据结构,使用结构共享。所有的更新操作都会返回新的值,但是在内部结构是共享的,来减少内存占用
    2023-02-02
  • react组件中的constructor和super知识点整理

    react组件中的constructor和super知识点整理

    这篇文章主要介绍了react组件中的constructor和super知识点整理,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • 详解react、redux、react-redux之间的关系

    详解react、redux、react-redux之间的关系

    这篇文章主要介绍了详解react、redux、react-redux之间的关系,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 基于react hooks,zarm组件库配置开发h5表单页面的实例代码

    基于react hooks,zarm组件库配置开发h5表单页面的实例代码

    这篇文章主要介绍了基于react hooks,zarm组件库配置开发h5表单页面,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • react脚手架配置代理的实现

    react脚手架配置代理的实现

    本文主要介绍了react脚手架配置代理的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • React学习笔记之列表渲染示例详解

    React学习笔记之列表渲染示例详解

    最近在学习React,学习到了列表渲染这一块,发现网上这方面的资料较少,所以自己来总结下,下面这篇文章主要给大家介绍了关于React学习笔记之列表渲染的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08

最新评论