Browse Source

types: improve type for WatchHandler (#160)

扩散性百万甜面包 6 years ago
parent
commit
016231d09f
2 changed files with 9 additions and 13 deletions
  1. 4 4
      packages/runtime-core/src/apiOptions.ts
  2. 5 9
      packages/runtime-core/src/apiWatch.ts

+ 4 - 4
packages/runtime-core/src/apiOptions.ts

@@ -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,

+ 5 - 9
packages/runtime-core/src/apiWatch.ts

@@ -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)) {