From 659331c0d499a253ecc6895075a00893fc6d07c1 Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Tue, 2 May 2023 03:19:46 +0800 Subject: [PATCH] fix: event "@update:" syntax causes TS error close #3100 --- .../src/generators/template.ts | 6 ++--- .../vue-test-workspace/vue-tsc/#3100/comp.vue | 26 +++++++++++++++++++ .../vue-test-workspace/vue-tsc/#3100/main.vue | 26 +++++++++++++++++++ 3 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 packages/vue-test-workspace/vue-tsc/#3100/comp.vue create mode 100644 packages/vue-test-workspace/vue-tsc/#3100/main.vue diff --git a/packages/vue-language-core/src/generators/template.ts b/packages/vue-language-core/src/generators/template.ts index 76cfe585f..54c82f7eb 100644 --- a/packages/vue-language-core/src/generators/template.ts +++ b/packages/vue-language-core/src/generators/template.ts @@ -989,7 +989,7 @@ export function generate( && prop.arg?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION ) { codes.push( - camelize('on-' + prop.arg.loc.source), + ...createObjectPropertyCode(camelize('on-' + prop.arg.loc.source)), ': {} as any, ', ); } @@ -1679,12 +1679,12 @@ export function generate( ]; } - function createObjectPropertyCode(a: Code, astHolder: any): Code[] { + function createObjectPropertyCode(a: Code, astHolder?: any): Code[] { const aStr = typeof a === 'string' ? a : a[0]; if (validTsVar.test(aStr)) { return [a]; } - else if (aStr.startsWith('[') && aStr.endsWith(']')) { + else if (aStr.startsWith('[') && aStr.endsWith(']') && astHolder) { const range = typeof a === 'object' ? a[2] : undefined; const data = typeof a === 'object' ? a[3] : undefined; return createInterpolationCode( diff --git a/packages/vue-test-workspace/vue-tsc/#3100/comp.vue b/packages/vue-test-workspace/vue-tsc/#3100/comp.vue new file mode 100644 index 000000000..7cf37ba23 --- /dev/null +++ b/packages/vue-test-workspace/vue-tsc/#3100/comp.vue @@ -0,0 +1,26 @@ + + + diff --git a/packages/vue-test-workspace/vue-tsc/#3100/main.vue b/packages/vue-test-workspace/vue-tsc/#3100/main.vue new file mode 100644 index 000000000..065d07488 --- /dev/null +++ b/packages/vue-test-workspace/vue-tsc/#3100/main.vue @@ -0,0 +1,26 @@ + + +