常用类型
当逐渐适应 React 和 TypeScript 的搭配使用后, 可以尝试阅读 @types/react
,此库提供了一整套类型。你可以在 DefinitelyTyped 的 React 目录中 找到它们。我们将在这里介绍一些更常见的类型。
DOM 事件
在 React 中处理 DOM 事件时,事件的类型通常可以从事件处理程序中推断出来。但是,当你想提取一个函数以传递给事件处理程序时,你需要明确设置事件的类型。
React 类型中提供了许多事件类型 —— 完整列表可以在 这里 查看,它基于 DOM 的常用事件。
当你需要确定某个类型时,可以先将鼠标悬停在你使用的事件处理器上,这样可以查看到事件的具体类型。
当你需要使用不包含在此列表中的事件时,你可以使用 React.SyntheticEvent
类型,这是所有事件的基类型。
子元素
描述组件的子元素有两种常见方法。第一种是使用 React.ReactNode
类型,这是可以在 JSX 中作为子元素传递的所有可能类型的并集:
这是对子元素的一个非常宽泛的定义。第二种方法是使用 React.ReactElement
类型,它只包括 JSX 元素,而不包括 JavaScript 原始类型,如 string 或 number:
注意,你不能使用 TypeScript 来描述子元素是某种类型的 JSX 元素,所以你不能使用类型系统来描述一个只接受 <li>
子元素的组件。
你可以在这个 TypeScript playground 中查看 React.ReactNode
和 React.ReactElement
的示例,并使用类型检查器进行验证。
样式属性
当在 React 中使用内联样式时,你可以使用 React.CSSProperties
来描述传递给 style
属性的对象。这个类型是所有可能的 CSS 属性的并集,它能确保你传递给 style
属性的是有效的 CSS 属性,并且你能在编辑器中获得样式编码提示。