当前位置: 首页 > wzjs >正文

梧州论坛 红豆社区seo是什么意思的缩写

梧州论坛 红豆社区,seo是什么意思的缩写,西安建设工程诚信平台,爱企查企业信息查询省流总结&#xff1a;defineProps 的泛型能力&#xff0c;来直接推导第三方组件的 props 类型 引入第三方库的类型&#xff0c;并直接在 <script setup> 中作为 props 使用。这种类型一般是复杂泛型&#xff08;包含联合类型、可选属性、交叉类型、条件类型等&#xff0…

省流总结defineProps泛型能力,来直接推导第三方组件的 props 类型

引入第三方库的类型,并直接在 <script setup> 中作为 props 使用。这种类型一般是复杂泛型(包含联合类型、可选属性、交叉类型、条件类型)。

特性Vue 3.2Vue 3.5(或 Vue 3.3+)
泛型类型识别✅ 可识别✅ 可识别
defineProps<泛型>() 支持✅ 支持,但弱✅ 支持完整
模板中类型提示(TS 提示)❌ 无提示或不完整✅ 完整提示
第三方库类型支持(复杂类型)⚠️ 需要手动检查✅ 可放心使用

问题:同一句代码,在不同版本中的差异。

在vue3.2出现了报错,即不支持第三方的类型;vue3.5可以直接使用,不存在报错。

报错语句:

import type { FontAwesomeIconProps } from '@fortawesome/vue-fontawesome'
defineProps<FontAwesomeIconProps>()

 vue3.2中的 报错内容:[@vue/compiler-sfc] type argument passed to defineProps() must be a literal type, or a reference to an interface or literal type.

 


 分析 —— 不同版本对复杂泛型的支持情况:

import type { FontAwesomeIconProps } from '@fortawesome/vue-fontawesome'
defineProps<FontAwesomeIconProps>()

使用了 defineProps泛型能力,来直接推导第三方组件的 props 类型

引入第三方库的类型FontAwesomeIconProps),并直接在 <script setup> 中作为 props 使用。这种类型一般是复杂泛型(包含联合类型、可选属性、交叉类型、条件类型)。


🧩 Vue 3.2 的支持情况

✅ 可以使用,但存在以下限制

  1. 类型可以正常识别,不会报错;

  2. 模板中不会获得完整的类型提示,例如 iconspin 这些 props,VSCode 无法自动补全或做类型检查

  3. 类型系统在 <script setup> 中并不会很好地将 defineProps<T>() 的泛型映射到 template

  4. @vue/compiler-sfcvue-tsc defineProps<T>() 泛型的推导能力有限

❗ 示例效果(Vue 3.2)

<script setup lang="ts">
import type { FontAwesomeIconProps } from '@fortawesome/vue-fontawesome'
const props = defineProps<FontAwesomeIconProps>()// 这里 props 有类型提示,但 template 中没有
</script><template><FontAwesomeIcon :icon="icon" /> <!-- ❌ icon 无提示,甚至报错 -->
</template>


🧩 Vue 3.5 的支持情况(或 Vue 3.3+)

✅ 支持非常完整

  1. defineProps<FontAwesomeIconProps>()被完全推导

  2. VSCode / Volar 插件会在 <template> 中提供准确的类型提示

  3. 即使 FontAwesomeIconProps复杂类型(比如嵌套、联合、交叉),也能推导成功

  4. <script setup generic> 可以配合使用,如果你需要泛型组件

✅ 示例效果(Vue 3.5)

<script setup lang="ts">
import type { FontAwesomeIconProps } from '@fortawesome/vue-fontawesome'const props = defineProps<FontAwesomeIconProps>()
</script><template><FontAwesomeIcon :icon="props.icon" :spin="props.spin" /> <!-- ✅ 全都有类型提示 -->
</template>

或者直接在模板中使用:

<template><FontAwesomeIcon v-bind="props" /> <!-- ✅ 类型也能传递 -->
</template>

✅ 总结对比

特性Vue 3.2Vue 3.5(或 Vue 3.3+)
泛型类型识别✅ 可识别✅ 可识别
defineProps<泛型>() 支持✅ 支持,但弱✅ 支持完整
模板中类型提示(TS 提示)❌ 无提示或不完整✅ 完整提示
第三方库类型支持(复杂类型)⚠️ 需要手动检查✅ 可放心使用

建议:

如果你正在使用 FontAwesomeIconProps 这种复杂泛型作为 defineProps 的泛型参数,并希望:

  • 保证 props 类型安全

  • <template> 中获得提示、补全

  • 更好维护和复用

请升级至 Vue 3.3 或 3.5,搭配 TypeScript 5.x最新的 Volar 插件,体验会好很多。


 vue3.2中引入第三方类型,如何解决?

创建独立的别名,并复制拷贝所参考的第三方库的属性。

将原先的写法(注释部分),改成 引入创建的别名

 即可成功显示!

http://www.dtcms.com/wzjs/821410.html

相关文章:

  • 摄影后期教程网站网络营销与策划
  • 商城网站的开发怎么做WordPress 文章模板制作
  • 信息化建设包括网站建设小程序首页模板
  • 营销类网站如何优化龙华品牌网站建设
  • 苏州建网站要多少钱东莞软文推广
  • wordpress 网站建设中学生个人网页制作代码
  • 社交网站建设需求分析通过电子邮件发布 wordpress
  • 凯叔讲故事网站谁做的网站建设需求分析怎么写
  • 网站在哪里设置关键字wordpress速度快
  • 专业展示设计网站老年大学网站开发
  • 上海网站建设极简慕枫贷款网站建设方案
  • AD这个软件做网站用得着吗区块链开发用什么语言
  • 网站怎么做才被收录快做网站需要学什么软件
  • 网站如何添加代码理县网站建设公司
  • 手机网站建设基本流程石材公司网站源码
  • 大连网站建设怎么样门户媒体有哪些
  • 快速免费建网站河南省建设厅建筑业信息网
  • 活动策划公司网站wordpress 模板安装
  • 做h5小程序的网站直播视频
  • 哪里有零基础网站建设教学公司wordpress rss静态化
  • 长沙网站seo源头厂家时空seo助手
  • 苏州网站小程序app开发公司android软件开发前景
  • 网站首页图片切换美橙互联
  • 安康市网站开发字节跳动小程序官网
  • 门户网站系统开发自己建站流程
  • 嘉兴做网站优化的公司263企业邮箱手机入口登录
  • 建站平台 阿里巴巴公众号开发者平台
  • 浪琴女士手表网站连平网站建设
  • 阜宁网站建设服务商装饰公司网站建设流程
  • 北京微网站建设设计服务公司自己设计网页作业的感悟