[英]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
is 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
。
我一直在做一些谷歌搜索,但我找不到一条似乎能抓住这一点的规则。
有没有人知道的?
正如其他人所提到的,目前没有这样的功能可用。 此外,linter 更适合样式而不是捕获编译错误。 我不认为您要问的是可能的,因为example
是动态类型并将其设置为字符串使其成为有效的 JSX 节点,而将其设置为对象则使其无效。 由于 JS 是一种动态语言,我们无法提前知道这一点。 Typescript 在这种情况下有帮助,但这是一个独立于 eslint 规则的类型系统,正如 @jonrsharpe 在评论中提到的那样,typescript 存储库存在一个问题,无法添加您请求的功能(#35622 )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.