TypeScript是否提供预定义的基础HTML标签内置类型?
React内置HTML标签类型使用说明
React 提供了开箱即用的全量HTML标签类型定义,完全可以替代你手动维护的Tags联合类型,不需要每次新增标签都手动补全定义。
核心内置类型
所有React原生支持的HTML、SVG标签的联合类型,可以直接通过keyof JSX.IntrinsicElements获取,这个类型是React JSX类型校验的底层依赖,写JSX标签时TS做标签名合法性校验就是基于这个类型,和你提到的HTMLAttributeAnchorTarget属于同一套内置类型体系,会跟随@types/react版本更新自动同步新增的标签支持,不需要手动维护。
基础用法
如果你的组件支持所有原生HTML标签,直接用这个类型即可:
// 全量HTML/SVG标签联合类型 type AllNativeTags = keyof JSX.IntrinsicElements;
如果你只需要支持部分容器类标签(就是你当前Tags定义的范围),可以用TS内置的Extract工具类型从全量标签里筛选需要的类型,这种写法可以避免手动写联合类型时的拼写错误,输错标签名TS会直接提示报错:
export type Tags = Extract< keyof JSX.IntrinsicElements, | 'div' | 'article' | 'section' | 'aside' | 'nav' | 'figure' | 'main' | 'header' | 'footer' // 后续新增支持的标签直接在这里加即可 >;
补充说明:React没有单独导出拆分好的「块级标签」「行内标签」这类细分场景的标签联合类型,所有标签相关的类型都可以基于
keyof JSX.IntrinsicElements做二次筛选得到,稳定性远高于纯手写维护的联合类型。
内容的提问来源于stack exchange,提问作者Jesse Winton
相关产品推荐
相关产品推荐

