当前位置: 首页 > news >正文

使用React掌握TypeScript

TypeScript将静态类型添加到JavaScript中,这有助于在运行之前捕获潜在的错误。当与React搭配使用时,TypeScript通过强制执行类型安全来增强组件。在本文中,我们将介绍在React中使用TypeScript的基本概念。

如何在React中使用TypeScript?

首先,你需要在React项目中安装TypeScript。如果你从头开始,创建一个TypeScript的新React应用:

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

对于现有项目,您可以通过运行以下命令来添加TypeScript:

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

现在,您可以开始使用.tsx文件而不是.jsx,您的React组件将受益于TypeScript的功能。

React组件Props的类型

当你在React中定义一个组件时,你可以为它的props指定类型,以使组件的使用更加清晰和安全。这里有一个基本的例子:

type UserProps = {name: string;age: number;
};const UserCard = ({ name, age }: UserProps) => (<div><h1>{name}</h1><p>{age} years old</p></div>
);

在这个例子中,UserCard需要两个props:name(字符串)和age(数字)。如果你试图传递不正确的类型,TypeScript将显示错误。

ReactNode与ReactElement

  • ReactNode: 表示任何可以由React渲染的东西。这包括字符串、数字、JSX、数组和null

  • ReactElement:返回到一个实际的React元素,它更具体,不包括字符串或null

type CardProps = {children: ReactNode;
};const Card = ({ children }: CardProps) => <div>{children}</div>;// Usage
<Card><p>Hello, World!</p></Card>

这里使用ReactNode是因为children可以是任何可渲染的元素,而不仅仅是React元素。

类型与接口

当定义Props或其他对象的形状时,类型接口都可以使用。所以,有什么区别?

类型:最适合创建联合类型或更复杂的组合。

接口:当您计划扩展或实现其他类型时,通常会更好。

这里有一个比较:

// Using type
type ButtonProps = {label: string;onClick: () => void;
};// Using interface
interface LinkProps {href: string;openInNewTab?: boolean;
}

虽然两者相似,但接口可以更自然地扩展:

interface IconButtonProps extends ButtonProps {icon: string;
}

如何使用TypeScript注解Props?

要为组件键入props,请声明一个类型接口,并将其作为组件props的类型注释传递。

type AlertProps = {message: string;severity: 'error' | 'warning' | 'info';
};const Alert = ({ message, severity }: AlertProps) => (<div className={`alert ${severity}`}>{message}</div>
);

使用TypeScript的React Hooks

React钩子也可以在TypeScript中输入,以确保组件中状态和效果逻辑的类型安全。下面是如何在TypeScript中使用useStateuseEffect

import { useState, useEffect } from 'react';const Counter = () => {const [count, setCount] = useState<number>(0);useEffect(() => {console.log(`Count is: ${count}`);}, [count]);return (<div><button onClick={() => setCount(count + 1)}>Increment</button><p>Count: {count}</p></div>);
};

在这个例子中,useState钩子的类型是为了确保count总是一个数字,并且useEffect在当前计数发生变化时记录它。

通过遵循这些最佳实践,您将能够在React应用程序中充分利用TypeScript的潜力,从而产生更强大、更可维护的代码。


http://www.mrgr.cn/news/42268.html

相关文章:

  • 多模态系统中专家混合(MoE)复杂性的解读
  • [C++][第三方库][etcd]详细讲解
  • (16)MATLAB仿真Nakagami-m分布1
  • java基础 day2
  • 【Node.js】内置模块FileSystem的保姆级入门讲解
  • 【CKA】十二、持久化存储卷PersistentVolume
  • JSON 全知全解:深入探索 JSON 的奥秘
  • 【力扣 | SQL题 | 每日四题】力扣1581, 1811, 1821, 1831
  • Linux基础命令top详解
  • 华为OD机试真题---第k个排列
  • Vue根实例、实例总结
  • 【MAUI】内容页ShellContent
  • 官方證實 iPhone 上的 Apple Intelligence 需用到 4GB 儲存空間
  • Linux基础命令ps详解
  • 二叉查找一>x 的平方根
  • 基于SpringBoot+Vue+MySQL的校园招聘管理系统
  • Linux shell编程学习笔记85:fold命令——让文件瘦身塑形显示
  • 认知杂谈95《君子藏器于身,待时而动》》
  • 探索蛋白质相互作用的新视角:图神经网络在预测中的应用
  • day03 笔试练习