使用 WindiCSS 的 Attributify Mode 时,JSX 提示属性不存在


问题

使用 WindiCSS 或者 UnoCSS 的 Attributify Mode,并配合 React、SolidJS 等使用 JSX 语法的框架时,

VSCode 会提示 类型“ButtonHTMLAttributes<HTMLButtonElement>”上不存在属性“border”。ts(2322) 之类的错误。

出错图片

原因

Attributify Mode 需要在 HTML 元素上添加自定义属性,而不是用 className

但是默认的 HTMLAttributes 类型不包含这些属性,因此需要手动打一个类型补丁。

解决

在项目根目录下的 index.d.ts 文件中添加下面的语句,这里以 SolidJS 为例,React 同理。

interface 不需要 extends 原来的,因为 TypeScript 会自动合并相同的 interface

declare module 'solid-js' {
  namespace JSX {
    interface HTMLAttributes<T> {
      bg?: string
      text?: string
      font?: string
      p?: string
      m?: string
      border?: string
    }
  }
}

export {}

这里只列出了部分属性,全部支持的属性可以看查 这个文章

参考资料


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM