From: Evan You Date: Fri, 2 Jul 2021 11:59:47 +0000 (-0400) Subject: fix(codegen): ensure valid types in genreated code when using global directives X-Git-Tag: v3.1.4~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a44d528af1227c05dedf610b6ec45504d8e58276;p=thirdparty%2Fvuejs%2Fcore.git fix(codegen): ensure valid types in genreated code when using global directives fix #4054 --- diff --git a/packages/compiler-core/src/codegen.ts b/packages/compiler-core/src/codegen.ts index 6367743d8b..48ccd18020 100644 --- a/packages/compiler-core/src/codegen.ts +++ b/packages/compiler-core/src/codegen.ts @@ -68,10 +68,7 @@ export interface CodegenResult { } export interface CodegenContext - extends Omit< - Required, - 'bindingMetadata' | 'inline' | 'isTS' - > { + extends Omit, 'bindingMetadata' | 'inline'> { source: string code: string line: number @@ -98,7 +95,8 @@ function createCodegenContext( optimizeImports = false, runtimeGlobalName = `Vue`, runtimeModuleName = `vue`, - ssr = false + ssr = false, + isTS = false }: CodegenOptions ): CodegenContext { const context: CodegenContext = { @@ -111,6 +109,7 @@ function createCodegenContext( runtimeGlobalName, runtimeModuleName, ssr, + isTS, source: ast.loc.source, code: ``, column: 1, @@ -466,7 +465,7 @@ function genModulePreamble( function genAssets( assets: string[], type: 'component' | 'directive' | 'filter', - { helper, push, newline }: CodegenContext + { helper, push, newline, isTS }: CodegenContext ) { const resolver = helper( __COMPAT__ && type === 'filter' @@ -485,7 +484,7 @@ function genAssets( push( `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${ maybeSelfReference ? `, true` : `` - })` + })${isTS ? `!` : ``}` ) if (i < assets.length - 1) { newline()