From ea8883df25191abe36aa8c6bf1fa0e1d3c144cd4 Mon Sep 17 00:00:00 2001 From: Jamie Sykes Date: Tue, 5 Mar 2019 14:08:00 +0000 Subject: [PATCH] Makes some changes but macros are not valid. --- types/collectionsjs/collectionsjs-tests.ts | 5 ++++- types/collectionsjs/index.d.ts | 15 ++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/types/collectionsjs/collectionsjs-tests.ts b/types/collectionsjs/collectionsjs-tests.ts index 1c3b8a5813..bc71c9e544 100644 --- a/types/collectionsjs/collectionsjs-tests.ts +++ b/types/collectionsjs/collectionsjs-tests.ts @@ -52,7 +52,10 @@ collection.sortBy('name'); // $ExpectType Collection<{ name: string; age: number collection.stringify(); // $ExpectType string collection.sum('age'); // $ExpectType any collection.take(2); // $ExpectType Collection<{ name: string; age: number; }> -collection.macro('addToMembers', (collection, n) => collection.map((collectionItem: any) => collectionItem + n)); // $ExpectType any + +// Collection.macro('addToMembers', (collection, n) => collection.map((collectionItem: any) => collectionItem + n)); +// const collection2 = new Collection([1,2,3,4]).addToMembers(3); + collection.unique(stark => stark.age); // $ExpectType Collection<{ name: string; age: number; }> collection.values(); // $ExpectType Collection<{ name: string; age: number; }> collection.where('age', 14); // $ExpectType Collection<{ name: string; age: number; }> diff --git a/types/collectionsjs/index.d.ts b/types/collectionsjs/index.d.ts index 40c616fcdb..364877050d 100644 --- a/types/collectionsjs/index.d.ts +++ b/types/collectionsjs/index.d.ts @@ -16,7 +16,7 @@ export default class Collection { count(): number; each(callback: (item: T) => void): Collection; filter(callback: (item: T) => boolean): Collection; - find(item: any): number; + find(item: T): number; first(callback?: ((item: T) => boolean)|null): T; flatten(deep?: boolean): Collection; get(index: number): T; @@ -24,23 +24,24 @@ export default class Collection { join(separator?: string): string; keys(): Collection; last(callback?: ((item: T) => boolean)|null): T; - map(callback: (item: T) => any): Collection; + map(callback: (item: T) => R): Collection; pluck(property: string): Collection; push(item: T): Collection; - reduce(callback: (previous: T, current: T) => any, initial: any): any; + reduce(callback: (previous: R, current: T) => R, initial: R): R; reject(callback: (item: T) => boolean): Collection; - remove(item: any): boolean; + remove(item: T): boolean; reverse(): Collection; skip(count: number): Collection; slice(start: number, end?: number): Collection; sort(compare?: () => boolean): Collection; sortBy(property: string, order?: string): Collection; stringify(): string; - sum(property?: string|null): any; + sum(property: T extends object ? keyof T : never): number take(count: number): Collection; - macro(name: string, callback: (...args: any) => any): any; + static macro(name: string, callback: (coll: Collection, ...args: unknown[]) => unknown): void; unique(callback?: string|null|((item: T) => any)): Collection; values(): Collection; - where(callback: ((item: T) => boolean)|string, value?: any): Collection; + where(key: K, value: T[K]): Collection + where(callback: (item: T) => boolean): Collection zip(array: T[]|Collection): Collection; }