Skip to content

Commit 8c1672f

Browse files
fix(language-core): should wrap item with Reactive on v-for (#4902)
Co-authored-by: Johnson Chu <[email protected]>
1 parent e6e8ae5 commit 8c1672f

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

packages/language-core/lib/codegen/globalTypes.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,11 @@ export function generateGlobalTypes(lib: string, target: number, strictTemplates
9292
function __VLS_getVForSourceType(source: number): [number, number, number][];
9393
function __VLS_getVForSourceType(source: string): [string, number, number][];
9494
function __VLS_getVForSourceType<T extends any[]>(source: T): [
95-
item: T[number],
95+
item: ${(
96+
target >= 3 ? `import('${lib}').Reactive<T[number]>` :
97+
target >= 2.7 ? `import('${lib}').UnwrapNestedRefs<T[number]>` :
98+
`T[number]`
99+
)},
96100
key: number,
97101
index: number,
98102
][];

packages/tsc/tests/__snapshots__/dts.spec.ts.snap

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ declare const _default: <Row extends BaseRow>(__VLS_props: NonNullable<Awaited<t
1313
attrs: any;
1414
slots: {
1515
default?(_: {
16-
row: Row;
16+
row: import("vue").Reactive<Row>;
1717
}): any;
1818
};
1919
emit: {};
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<script setup lang="ts" generic="T">
1+
<script setup lang="ts" generic="T extends { foo: number }">
22
import { exactType } from '../../shared';
33
44
const props = withDefaults(defineProps<{
@@ -11,12 +11,12 @@ const props = withDefaults(defineProps<{
1111

1212
<template>
1313
<div v-for="item of list">
14-
{{ exactType(item, {} as T) }}
14+
{{ exactType(item.foo, {} as number) }}
1515
</div>
1616
<div v-for="item of props.list">
17-
{{ exactType(item, {} as T) }}
17+
{{ exactType(item.foo, {} as number) }}
1818
</div>
1919
<div v-for="item of $props.list">
20-
{{ exactType(item, {} as T) }}
20+
{{ exactType(item.foo, {} as number) }}
2121
</div>
22-
</templat>
22+
</template>

0 commit comments

Comments
 (0)