Avatar ·

何时在 TypeScript 中使用 JSX.Element、ReactNode 和 ReactElement?

大家好!我开始学习 React 与 TypeScript,遇到了组件返回值类型和 props 类型的混淆。 这是一个简单的组件: ```typescript interface Props { children: ???; // 这里写什么? icon: ???; // 这里呢? } function Card({ children, icon }: Props) { return (
{icon}
{children}
); } ``` 我在不同项目中看到三种类型:`JSX.Element`、`ReactNode` 和 `ReactElement`。它们看起来用于相同目的,但又不完全一样。 例如,我知道: - `ReactNode` 可用于 children - `JSX.Element` 从函数组件返回 - `ReactElement` 是基础类型 但当我写: ```typescript function MyComponent(): JSX.Element { return
Hello
; // 可以工作 } function MyComponent2(): React.ReactNode { return
Hello
; // 也可以工作 } ``` 有什么区别?对于 props 来说哪种类型是正确的?