refactor: remove old watch signature support

This commit is contained in:
Evan You 2020-02-25 18:57:41 -05:00
parent 52cc7e8231
commit 711d16cc65

View File

@ -82,20 +82,14 @@ export function watchEffect(
// initial value for watchers to trigger on undefined initial values
const INITIAL_WATCHER_VALUE = {}
// overload #1: simple effect
export function watch(
effect: WatchEffect,
options?: BaseWatchOptions
): StopHandle
// overload #2: single source + cb
// overload #1: single source + cb
export function watch<T, Immediate extends Readonly<boolean> = false>(
source: WatchSource<T>,
cb: WatchCallback<T, Immediate extends true ? (T | undefined) : T>,
options?: WatchOptions<Immediate>
): StopHandle
// overload #3: array of multiple sources + cb
// overload #2: array of multiple sources + cb
// Readonly constraint helps the callback to correctly infer value types based
// on position in the source array. Otherwise the values will get a union type
// of all possible value types.
@ -110,24 +104,18 @@ export function watch<
// implementation
export function watch<T = any>(
effectOrSource: WatchSource<T> | WatchSource<T>[] | WatchEffect,
cbOrOptions?: WatchCallback<T> | WatchOptions,
source: WatchSource<T> | WatchSource<T>[],
cb: WatchCallback<T>,
options?: WatchOptions
): StopHandle {
if (isFunction(cbOrOptions)) {
// watch(source, cb)
return doWatch(effectOrSource, cbOrOptions, options)
} else {
// TODO remove this in the next release
__DEV__ &&
warn(
`\`watch(fn, options?)\` signature has been moved to a separate API. ` +
`Use \`watchEffect(fn, options?)\` instead. \`watch\` will only ` +
`support \`watch(source, cb, options?) signature in the next release.`
)
// watch(effect)
return doWatch(effectOrSource, null, cbOrOptions)
if (__DEV__ && !isFunction(cb)) {
warn(
`\`watch(fn, options?)\` signature has been moved to a separate API. ` +
`Use \`watchEffect(fn, options?)\` instead. \`watch\` now only ` +
`supports \`watch(source, cb, options?) signature.`
)
}
return doWatch(source, cb, options)
}
function doWatch(