Skip to content

Commit

Permalink
💪 Added typesafe pluck/pick/omit.
Browse files Browse the repository at this point in the history
  • Loading branch information
Nicolas Gramlich committed Dec 4, 2017
1 parent 7666f21 commit d29e14d
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/utils/omit.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import * as Lodash from 'lodash';

export type Diff<T extends string, U extends string> = ({[P in T]: P } & {[P in U]: never } & { [x: string]: never })[T];
export type Omit<T, K extends keyof T> = {[P in Diff<keyof T, K>]: T[P]};

export function omit<T, K extends keyof T>(obj: T, keys: K|K[]): Omit<T, K> {
return Lodash.omit(obj, keys);
}
5 changes: 5 additions & 0 deletions src/utils/pick.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import * as Lodash from 'lodash';

export function pick<T, K extends keyof T>(obj: T, keys: K | K[]): Pick<T, K> {
return Lodash.pick(obj, keys);
}
5 changes: 5 additions & 0 deletions src/utils/pluck.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import * as Lodash from 'lodash';

export function pluck<T, K extends keyof T>(objs: T[], key: K): T[K][] {
return Lodash.map(objs, key);
}

0 comments on commit d29e14d

Please sign in to comment.