我已经简化了我试图创建的组件:
// MyComp.vue
<script setup lang="ts">
import { PropType, defineProps, defineEmits } from 'vue';
const props = defineProps({
modelValue: {
type: Array as PropType<unknown[]>,
required: true,
},
});
const emit = defineEmits({
updateModelValue: (value: unknown[]) => true,
});
</script>
<template>
<div v-for="(item, index) in modelValue" :key="index">
<slot :item="item" :index="index"></slot>
</div>
</template>
// Parent.vue
<script setup lang="ts">
import { ref } from 'vue'
import { MyComp } from '.';
const myArray = ref([
{
name: 'A',
id: 1,
},
{
name: 'B',
id: 2,
},
]);
</script>
<template>
<div>
<MyComp v-model="myArray">
<template #default="{ item }">
<!-- item is of type unknown - type not inferred :( -->
<div>{{ item }} </div>
</template>
</MyComp >
</div>
</template>
我的问题是item
的类型不能被推断出来,所以我不能得到我想要的智能感知。
我如何才能做到这一点?
(StackOverflow不让我在没有更多细节的情况下发布这个问题,所以我添加了这句话)
1条答案
按热度按时间rt4zxlrg1#
看起来你已经将数组项类型设置为
unknown
。我不认为在这一点上还有什么可供TS推断的。如果你使用的是Vue 3.3或更高版本,你可以使用通用组件:
这将正确地推断类型,请参见playground