gpt4 book ai didi

reactjs - 带有 react-dnd 的 TypeScript 2.0 给出错误 "JSX element attributes may not be a union type"

转载 作者:搜寻专家 更新时间:2023-10-30 20:31:45 25 4
gpt4 key购买 nike

在 TypeScript + React 项目中,我使用 react-dnd与其 DefinitelyTyped typings :

interface ExampleScreenProps { a, b, c }
interface ExampleScreenState { x, y, z }

class ExampleScreen extends React.Component<ExampleScreenProps, ExampleScreenState> { }

export default DragDropContext(HTML5Backend)(ExampleScreen);

这会在另一个组件中呈现:

import ExampleScreen from "./ExampleScreen";

<ExampleScreen a="a" b="b" c="c" />

这在 TS 1.8 中没有任何错误。当我升级到 TS 2.0 时,出现以下编译错误:

Error:(90, 10) TS2600: JSX element attributes type '(ExampleScreenProps & { children?: ReactNode; }) | (ExampleScreenProps & { children...' may not be a union type.

这是 type definition for DragDropContext :

export function DragDropContext<P>(
backend: Backend
): <P>(componentClass: React.ComponentClass<P> | React.StatelessComponent<P>) => ContextComponentClass<P>;

我不能把这些放在一起。提示的错误是什么?好像不喜欢ComponentClass<P> | StatelessComponent<P>的并集,但这些不是元素属性,元素属性只是 <P> .我尝试明确传递 <P> :

export default DragDropContext<ExampleProps>(HTML5Backend)(ExampleScreen);

但同样的错误仍然存​​在。我可以通过断言输出来解决它:

export default DragDropContext(HTML5Backend)(ExampleScreen) as React.ComponentClass<ExampleProps>;

但我不喜欢必须使用断言,而且我不了解实际问题,或者我做错了什么。这是可以修复的打字问题吗?

最佳答案

typescript 2.4.2 没有构建错误
和使用的依赖项:

    "react": "^15.6.1",
"react-dom": "^15.6.1",
"react-dnd":"^2.4.0"

"@types/react": "^16.0.5",
"@types/react-dom": "^15.0.0",
"@types/react-dnd":"^2.0.33",

关于reactjs - 带有 react-dnd 的 TypeScript 2.0 给出错误 "JSX element attributes may not be a union type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40269415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com