javascript 泛型类型“Props”不能赋给类型“IntrinsicAttributes & Props”

iyr7buue  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(215)

我对Typescript还是个新手,我想弄清楚到底发生了什么,以及原因。我已经更新了项目的typescript依赖关系,从4.7.4到最新的4.8.4版本,我得到了组件的错误,这些组件使用了通用的props。
示例:

export const withSomething = function <Props>(Component: FunctionComponent<Props>): FunctionComponent<Props> {
    const WithSomething = function (props: Props) {
        return <Component {...props} />
    };

    return WithSomething;
};

我从示例中删除了任何真正的逻辑,最初它是在一些额外的提供程序中 Package 组件。* Props * 是通用的。这段代码在typescript版本4.7.4中工作得非常好。但是对于4.8.4,我得到了以下错误:
x一个一个一个一个x一个一个二个x
现在,也许我不知 prop 体要看什么,但对我来说,* react * 源代码中没有任何东西强制 * FunctionComponent * 的 * Props * 扩展 * JSX. IntrinsicAttributes *。我已经花了几个小时试图找到原因,现在我不知道到底发生了什么。我也不一定在Typescript发行说明中看到任何解释这一点的东西。但我可能没能从他们那里了解到足够多。
我可以简单地扩展 * JSX. IntrinsicAttributes *,更新所有使用这段代码的地方,它可能会工作,但我想知道发生了什么,这是正确的方法。在阅读了几个主题后,我很确定我错过了一些相当明显的东西。
我很感激你的帮助。

w8rqjzmb

w8rqjzmb1#

从技术上讲,IntrinsicAttributes只有“key”属性,所以你可以只传递一个键给Component,它就会编译。理论上讲,这是一个脆弱的解决方案,但谁知道什么时候会有其他东西添加到该接口。

export const withSomething = function <Props>(Component: React.FunctionComponent<Props>): React.FunctionComponent<Props> {
    const WithSomething = function (props: Props) {
        return <Component {...props} key="ComponentWithSomething" />
    };

    return WithSomething;
};

相关问题