是否有任何 eslint 规则可以防止 `Objects are not valid as a React child`

Are there any eslint rules that could prevent `Objects are not valid as a React child`

我正在使用 Typescript 编写 React,在更改我的代码后,我开始看到 Objects are not valid as a React child 个错误。

我已经将 属性 从 string 更改为 Optional<string>,所以这个错误完全有道理,因为我的 <div>{property}</div> 代码不再正确。

所以,这是一个在运行时被捕获的类型错误。

我没有做任何类型转换或任何其他代码“技巧”来尝试颠覆预先存在的类型检查;我只是渲染一个 React 在运行时检测到的值作为一个对象。

在我看来,适当的 linting 规则或打字稿配置应该能够捕捉到 property 不是有效的 React 子项。

这是一个非常简单的例子 (TSPlayground):

type Props = {
    example:{}
};

const Foo = ({example}: Props) => <div>{example}</div>

我预计会出现指向在 JSX 中使用 example 的错误。

我一直在进行一些谷歌搜索,但我找不到似乎可以捕捉到这一点的规则。

有人知道吗?

正如其他人所提到的,目前没有此类功能可用。此外,linters 更适合样式而不是捕获编译错误。我不认为你问的是可能的,因为 example 是一个动态类型,将它设置为一个字符串使其成为一个有效的 JSX 节点,而将它设置为一个对象使其无效。由于 JS 是一种动态语言,我们无法提前知道这一点。 Typescript 在这种情况下有所帮助,但这是一个独立于 eslint 规则的类型系统,正如@jonrsharpe 在评论中提到的那样,typescript 存储库中存在一个问题,无法添加您请求的功能 (#35622)。