fix(runtime-vapor): properly normalize emits options if emits is an array (#12614)

This commit is contained in:
edison 2025-01-28 17:04:48 +08:00 committed by GitHub
parent 0b7f508432
commit b6d539997b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 12 additions and 7 deletions

View File

@ -195,8 +195,17 @@ describe('component: emit', () => {
).not.toHaveBeenWarned()
})
test.todo('validator warning', () => {
// TODO: warning validator
test('validator warning', () => {
define({
emits: {
foo: (arg: number) => arg > 0,
},
setup(_, { emit }) {
emit('foo', -1)
return []
},
}).render()
expect(`event validation failed for event "foo"`).toHaveBeenWarned()
})
test('.once', () => {
@ -415,8 +424,4 @@ describe('component: emit', () => {
await nextTick()
expect(fn).not.toHaveBeenCalled()
})
// NOTE: not supported mixins
// test.todo('merge string array emits', async () => {})
// test.todo('merge object emits', async () => {})
})

View File

@ -18,7 +18,7 @@ export function normalizeEmitsOptions(
let normalized: ObjectEmitsOptions
if (isArray(raw)) {
normalized = {}
for (const key in raw) normalized[key] = null
for (const key of raw) normalized[key] = null
} else {
normalized = raw
}