source: string | Function,
cb: Function,
options?: WatchOptions
-): () => void {
+): StopHandle {
const ctx = this.renderProxy!
const getter = isString(source) ? () => ctx[source] : source.bind(ctx)
const stop = watch(getter, cb.bind(ctx), options)
import { instanceWatch } from './apiWatch'
import { EMPTY_OBJ, hasOwn, globalsWhitelist } from '@vue/shared'
import { ExtractComputedReturns } from './apiOptions'
-import { UnwrapRef } from '@vue/reactivity'
+import { UnwrapRef, ReactiveEffect } from '@vue/reactivity'
import { warn } from './warning'
// public properties exposed on the proxy, which is used as the render context
$root: ComponentInternalInstance | null
$parent: ComponentInternalInstance | null
$emit: (event: string, ...args: unknown[]) => void
+ $el: any
+ $options: any
+ $forceUpdate: ReactiveEffect
+ $nextTick: typeof nextTick
+ $watch: typeof instanceWatch
} & P &
UnwrapRef<B> &
D &