弃用全局 JSX 命名空间后,JSX.Element 的正确返回类型替换是什么?
P粉404539732
P粉404539732 2023-10-26 21:00:38
[React讨论组]

@types/react 中,全局 JSX 命名空间已被弃用:

declare global {
    /**
     * @deprecated Use `React.JSX` instead of the global `JSX` namespace.
     */
    namespace JSX {
    ...
    }
}

由于我启用了 ESLint 的 deprecation/deprecation 规则(来自插件 eslint-plugin-deprecation),我现在收到如下函数组件返回类型的错误:

export default function TestComponent(): JSX.Element { // This JSX is marked as deprecated
    return (
        Test
    );
}

既然全局 JSX 命名空间已被弃用,那么在这种情况下 JSX.Element 的正确返回类型替换是什么?

它是 React.JSX.Element 吗,如弃用消息中所述:

export default function TestComponent(): React.JSX.Element { ... }

或者是 ReactElement 像这样:

import { ReactElement } from "react";
export default function TestComponent(): ReactElement { ... }

或者最好使用 React.FC 声明函数组件并让 TypeScript 推断返回类型,如下所示:

export const TestComponent: React.FC = () => { ... };


P粉404539732
P粉404539732

全部回复(1)
P粉465287592

使用React.JSX


或者从 "react" 导入 JSX

import {JSX} from 'react'
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号