diff --git a/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineEmits.spec.ts.snap b/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineEmits.spec.ts.snap
index a8bd930fb..ca433de60 100644
--- a/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineEmits.spec.ts.snap
+++ b/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineEmits.spec.ts.snap
@@ -30,6 +30,26 @@ return { emit }
})"
`;
+exports[`defineEmits > w/ type (enum) 1`] = `
+"import { defineComponent as _defineComponent } from 'vue'
+enum Foo { BAR = 'bar' }
+ interface Emits {
+ (e: Foo.BAR, value: string): void;
+ }
+
+export default /*#__PURE__*/_defineComponent({
+ emits: [\\"bar\\"],
+ setup(__props, { expose: __expose, emit }) {
+ __expose();
+
+
+
+return { Foo, emit }
+}
+
+})"
+`;
+
exports[`defineEmits > w/ type (exported interface) 1`] = `
"import { defineComponent as _defineComponent } from 'vue'
export interface Emits { (e: 'foo' | 'bar'): void }
diff --git a/packages/compiler-sfc/__tests__/compileScript/defineEmits.spec.ts b/packages/compiler-sfc/__tests__/compileScript/defineEmits.spec.ts
index c5d2900a4..d7e0fff63 100644
--- a/packages/compiler-sfc/__tests__/compileScript/defineEmits.spec.ts
+++ b/packages/compiler-sfc/__tests__/compileScript/defineEmits.spec.ts
@@ -89,6 +89,20 @@ const emit = defineEmits(['a', 'b'])
expect(content).toMatch(`emits: ["foo", "bar"]`)
})
+ test('w/ enum value', () => {
+ const { content } = compile(`
+
+ `)
+ assertCode(content)
+ expect(content).toMatch(`emits: ["bar"]`)
+ })
+
test('w/ type from normal script', () => {
const { content } = compile(`