当前位置:首页 > React

react如何使用ts

2026-02-26 17:11:32React

在 React 中使用 TypeScript 的实践方法

安装 TypeScript 及相关依赖
通过 create-react-app 创建项目时直接选择 TypeScript 模板:

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

已存在的项目可通过以下命令添加 TypeScript:

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

组件类型定义
函数组件使用 React.FC 或直接标注 Props 类型:

interface Props {
  name: string;
  age?: number; // 可选属性
}
const MyComponent: React.FC<Props> = ({ name, age = 18 }) => (
  <div>{name} - {age}</div>
);

状态管理类型标注
useState 通过泛型指定类型:

const [count, setCount] = useState<number>(0);
const [user, setUser] = useState<{ id: string; name: string } | null>(null);

事件处理类型
使用 React 提供的合成事件类型:

const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
  console.log(e.target.value);
};
const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {
  e.preventDefault();
};

高阶组件与 Context 类型
高阶组件需显式声明 Props 类型:

react如何使用ts

function withAuth<P extends object>(Component: React.ComponentType<P>) {
  return (props: P) => <Component {...props} />;
}

Context 示例:

interface ThemeContextType {
  theme: string;
  toggleTheme: () => void;
}
const ThemeContext = React.createContext<ThemeContextType | undefined>(undefined);

泛型组件实现
适用于可复用组件开发:

interface ListProps<T> {
  items: T[];
  renderItem: (item: T) => React.ReactNode;
}
function List<T>({ items, renderItem }: ListProps<T>) {
  return <div>{items.map(renderItem)}</div>;
}

类型声明文件管理
自定义类型可放在 src/types 目录下:

react如何使用ts

// src/types/user.d.ts
declare interface User {
  id: string;
  name: string;
  email: string;
}

常见问题解决
类型断言仅在必要时使用:

const element = document.getElementById('root') as HTMLElement;

处理第三方库无类型时,可创建 @types/package-name/index.d.ts 或使用 declare module

工程化配置
tsconfig.json 关键配置项:

{
  "compilerOptions": {
    "jsx": "react-jsx",
    "esModuleInterop": true,
    "strict": true
  }
}

测试组件类型
使用 @testing-library/react 时类型自动推断,自定义渲染器需扩展类型:

import { render, screen } from '@testing-library/react';
test('renders text', () => {
  render(<MyComponent name="Test" />);
  expect(screen.getByText(/Test/)).toBeInTheDocument();
});

分享给朋友:

相关文章

如何删除react

如何删除react

卸载 React 项目依赖 打开项目根目录下的 package.json 文件,删除所有包含 react、react-dom 或其他 React 相关库的依赖项。保存文件后运行以下命令: npm…

react 如何运行

react 如何运行

运行 React 项目的步骤 安装 Node.js 确保系统已安装 Node.js(建议版本 16+),可通过官网下载并安装。安装后验证版本: node -v npm -v 创建 React 项目…

react 如何调试

react 如何调试

调试 React 应用的方法 使用 React Developer Tools 安装 Chrome 或 Firefox 的 React Developer Tools 扩展,可以检查组件树、状态和 p…

如何同步react

如何同步react

同步React组件状态的方法 使用useState和useEffect钩子组合可以同步React组件的状态。useState用于声明状态变量,useEffect用于监听状态变化并执行副作用。 imp…

理解如何react

理解如何react

理解React的核心概念 React是一个用于构建用户界面的JavaScript库,专注于通过组件化开发提高代码的可维护性和复用性。其核心思想包括虚拟DOM(Virtual DOM)和单向数据流,能够…

react如何打包

react如何打包

打包 React 项目的基本步骤 React 项目通常使用 create-react-app 或类似的脚手架工具创建,这些工具内置了打包功能。以下是打包 React 项目的详细方法: 安装依赖并构…