Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以防止JSX注释添加';儿童';元素,潜在的破坏类型?_Javascript_Reactjs_Typescript_Jsx - Fatal编程技术网

Javascript 是否可以防止JSX注释添加';儿童';元素,潜在的破坏类型?

Javascript 是否可以防止JSX注释添加';儿童';元素,潜在的破坏类型?,javascript,reactjs,typescript,jsx,Javascript,Reactjs,Typescript,Jsx,假设我有这样一个第三方库: 声明var SomeComponentFromLibrary:React.FC; 其中子元素被定义为React.React元素,我无法改变这一事实 现在,假设我使用它,使用一个组件,该组件碰巧生成了一个类型错误,我希望暂时抑制该错误: {/*@ts预期错误*/} 这在SomeComponentFromLibrary的子项中创建了两项(遗憾的是,注释{}和类型脚本注释指令对JSX不太友好。但您肯定可以让它工作 给它一个子元素,用大括号括起来,{},注释用大括号括起

假设我有这样一个第三方库:

声明var SomeComponentFromLibrary:React.FC;
其中
子元素
被定义为
React.React元素
,我无法改变这一事实

现在,假设我使用它,使用一个组件
,该组件碰巧生成了一个类型错误,我希望暂时抑制该错误:


{/*@ts预期错误*/}

这在
SomeComponentFromLibrary
子项中创建了两项(遗憾的是,注释
{}
类型脚本注释指令对JSX不太友好。但您肯定可以让它工作

给它一个子元素,用大括号括起来,
{}
,注释用大括号括起来

<SomeComponentFromLibrary>
    {/* @ts-expect-error */
        <MyComponent />
    }
</SomeComponentFromLibrary>

{/*@ts预期错误*/
}


另外,旁注:
SomeComponentFromLibrary
的键入可能是错误的。在我所见过的几乎所有情况下,
子项
都应键入为
React.ReactNode
。当您这样键入此函数时,它将


所以我可能会为这个库创建一个pull请求来修复它。

看起来这是一个bug:


它在这里是固定的:应该在4.1或4.2中发布-(据我所知,
{null/*comment*/}
React.ReactElement[]
,非常确定您将无法以其他方式解决此问题:-(据我所知,
{/*…*/}
对发送到组件的内容没有任何影响:例如,它不会使您的示例中有多个子项。只有一个子项:
(我必须尝试确保::-)@t.J.Crowder,啊,您是对的!我得到了
导出默认值()=>(React.createElement(SomeComponentFromLibrary,null,React.createElement(MyComponent,null));
没有传递额外的子项!这一定是TS的问题,而不是JSX->JS编译?如果你真的因为它而出错,是的,这看起来像是一个bug或是他们还没有实现的功能。(我可以发誓
{/*…*/}
以前在JSX中不起作用——表达式过去必须有一个值——但它最近起作用了,所以……)您需要再次检查您是否完全掌握了TS的最新信息。:-)
<SomeComponentFromLibrary>
    {/* @ts-expect-error */
        <MyComponent />
    }
</SomeComponentFromLibrary>