import { ErrorCodes, callWithErrorHandling } from './errorHandling'
import { isArray } from '@vue/shared'
-import { ComponentPublicInstance } from './componentPublicInstance'
import { ComponentInternalInstance, getComponentName } from './component'
import { warn } from './warning'
import { ReactiveEffect } from '@vue/reactivity'
const RECURSION_LIMIT = 100
type CountMap = Map<SchedulerJob | SchedulerCb, number>
-export function nextTick(
- this: ComponentPublicInstance | void,
- fn?: () => void
+export function nextTick<T = void>(
+ this: T,
+ fn?: (this: T) => void
): Promise<void> {
const p = currentFlushPromise || resolvedPromise
return fn ? p.then(this ? fn.bind(this) : fn) : p
expectError(this.$emit('input'))
// @ts-expect-error
expectError(this.$emit('input', 1))
+ },
+ mounted() {
+ // #3599
+ this.$nextTick(function() {
+ // this should be bound to this instance
+
+ this.$emit('click', 1)
+ this.$emit('input', 'foo')
+ // @ts-expect-error
+ expectError(this.$emit('nope'))
+ // @ts-expect-error
+ expectError(this.$emit('click'))
+ // @ts-expect-error
+ expectError(this.$emit('click', 'foo'))
+ // @ts-expect-error
+ expectError(this.$emit('input'))
+ // @ts-expect-error
+ expectError(this.$emit('input', 1))
+ })
}
})