<script setup lang="ts">
import A from "./A.vue";
<script>
<template>
<A></A>
</template>
// A.vue
<script setup lang="ts" generic="T">
...
<script>
<template>
...
</template>
使用的时候在哪里定义T
呢?
还是这组件不是这样用的?
文档地址
<script setup lang="ts">
import A from "./A.vue";
<script>
<template>
<A></A>
</template>
// A.vue
<script setup lang="ts" generic="T">
...
<script>
<template>
...
</template>
使用的时候在哪里定义T
呢?
还是这组件不是这样用的?
文档地址
A.vue:
<script setup lang="ts" generic="T">
import { defineProps } from 'vue';
const props = defineProps<{
items: T[];
selected: T | null;
}>();
</script>
<template>
<div>
<div v-for="item in props.items" :key="item">
{{ item }}
</div>
<div>
Selected: {{ props.selected }}
</div>
</div>
</template>
ParentComponent.vue
<script setup lang="ts">
import { ref } from 'vue';
import A from './A.vue';
const items = ref<string[]>(['item1', 'item2', 'item3']);
const selected = ref<string | null>(null);
</script>
<template>
<A :items="items" :selected="selected"></A>
</template>
3 回答4.2k 阅读✓ 已解决
6 回答1.9k 阅读✓ 已解决
3 回答1.6k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
不用定义,vue-tsc 会自动推断。
此时你鼠标放上去,就能看到类型自动推断了:
如果非要显式指定泛型也行,但 template 是没办法了,得用 tsx: