#独家
vue3+ts属性类型定义时如何可以传入任意类型的数组呢?

2023-04-24 0 2,923

场镜

我封装了一个下拉框,现在下拉选项的类型原打算是只有label和value属性,但是现在组件的使用场景扩大了,label和value对应的字段可能不一样,这样options的类型就没法指定了,因为传入的类属性不定,这该如何声明类型呢?

代码

interface OptionsProp {
  label?: string | number
  value?: string
}

const props = defineProps({
  label: propTypes.string,
  value: propTypes.string,
  labelField: propTypes.string.def('label'),
  valueField: propTypes.string.def('value'),
  options: Array as PropType<OptionsProp[]>,
  disable: propTypes.bool.def(false),

})

// 使用
interface MyOption{
occupationCode:string
occupationName:string
}
const myOptions =ref<MyOption>([])
<MySelect
    label="职业"
    :value="info.occupationCode"
    label-field="occupationName"
    value-field="occupationCode"
    :options="myOptions"  // 这有警告信息
/>

myOptions的类型的属性名,也可能是其他,比如aaName,aaCode等等。

警告信息

不能将类型“{ occupationCode: string; occupationName: string; }[]”分配给类型“OptionsProp[]”。
类型“{ occupationCode: string; occupationName: string; }”与类型“OptionsProp”不具有相同的属性

疑问

我这个options该如何定义能接受属性名不定的场景呢?属性目前是只有label和value两个字段

那就不指定键值了

type OptionsProp = Record<string, any>
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 vue3+ts属性类型定义时如何可以传入任意类型的数组呢? https://www.jkxiazai.com/1651.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务