]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
types(runtime-core): Adds type signature for renderList helper (#924)
authorRahul Kadyan <hi@znck.me>
Mon, 6 Apr 2020 13:57:32 +0000 (19:27 +0530)
committerGitHub <noreply@github.com>
Mon, 6 Apr 2020 13:57:32 +0000 (09:57 -0400)
packages/runtime-core/src/helpers/renderList.ts

index f45020d418c1b1ebaafbd9ea57853c70e300b2e8..5dd68d6b8a80e6ad99db9a79f47d7a5b6ac2887f 100644 (file)
@@ -1,13 +1,44 @@
 import { VNodeChild } from '../vnode'
 import { isArray, isString, isObject } from '@vue/shared'
 
+// v-for string
 export function renderList(
-  source: unknown,
-  renderItem: (
-    value: unknown,
-    key: string | number,
-    index?: number
+  source: string,
+  renderItem: (value: string, index: number) => VNodeChild
+): VNodeChild[]
+
+// v-for number
+export function renderList(
+  source: number,
+  renderItem: (value: number, index: number) => VNodeChild
+): VNodeChild[]
+
+// v-for array
+export function renderList<T>(
+  source: T[],
+  renderItem: (value: T, index: number) => VNodeChild
+): VNodeChild[]
+
+// v-for iterable
+export function renderList<T>(
+  source: Iterable<T>,
+  renderItem: (value: T, index: number) => VNodeChild
+): VNodeChild[]
+
+// v-for object
+export function renderList<T>(
+  source: T,
+  renderItem: <K extends keyof T>(
+    value: T[K],
+    key: K,
+    index: number
   ) => VNodeChild
+): VNodeChild[]
+
+// actual implementation
+export function renderList(
+  source: any,
+  renderItem: (...args: any[]) => VNodeChild
 ): VNodeChild[] {
   let ret: VNodeChild[]
   if (isArray(source) || isString(source)) {