types: improve type for WatchHandler (#160)

This commit is contained in:
扩散性百万甜面包 2019-10-08 22:48:24 +08:00 committed by Evan You
parent ff0f3bdf7c
commit 016231d09f
2 changed files with 9 additions and 13 deletions

View File

@ -116,11 +116,11 @@ export type ExtractComputedReturns<T extends any> = {
: ReturnType<T[key]>
}
type WatchHandler = (
val: any,
oldVal: any,
export type WatchHandler<T = any> = (
val: T,
oldVal: T,
onCleanup: CleanupRegistrator
) => void
) => any
type ComponentWatchOptions = Record<
string,

View File

@ -20,6 +20,7 @@ import {
} from './errorHandling'
import { onBeforeUnmount } from './apiLifecycle'
import { queuePostRenderEffect } from './createRenderer'
import { WatchHandler } from './apiOptions'
export interface WatchOptions {
lazy?: boolean
@ -49,7 +50,7 @@ export function watch(effect: SimpleEffect, options?: WatchOptions): StopHandle
// overload #2: single source + cb
export function watch<T>(
source: WatcherSource<T>,
cb: (newValue: T, oldValue: T, onCleanup: CleanupRegistrator) => any,
cb: WatchHandler<T>,
options?: WatchOptions
): StopHandle
@ -65,14 +66,9 @@ export function watch<T extends WatcherSource<unknown>[]>(
): StopHandle
// implementation
export function watch(
effectOrSource:
| WatcherSource<unknown>
| WatcherSource<unknown>[]
| SimpleEffect,
cbOrOptions?:
| ((value: any, oldValue: any, onCleanup: CleanupRegistrator) => any)
| WatchOptions,
export function watch<T = any>(
effectOrSource: WatcherSource<T> | WatcherSource<T>[] | SimpleEffect,
cbOrOptions?: WatchHandler<T> | WatchOptions,
options?: WatchOptions
): StopHandle {
if (isFunction(cbOrOptions)) {