File tree Expand file tree Collapse file tree 3 files changed +51
-7
lines changed
Expand file tree Collapse file tree 3 files changed +51
-7
lines changed Original file line number Diff line number Diff line change 1- export default function omit < T extends object , K extends keyof T > (
2- obj : T ,
1+ const omit = < T extends object , K extends keyof T > (
2+ oriObj : T ,
33 fields : K [ ] | readonly K [ ] ,
4- ) : Omit < T , K > {
5- const clone = Object . assign ( { } , obj ) ;
4+ ) : Omit < T , K > => {
5+ if ( ! oriObj ) {
6+ return { } as Omit < T , K > ;
7+ }
8+
9+ const clone = Object . assign ( { } , oriObj ) ;
610
711 if ( Array . isArray ( fields ) ) {
8- fields . forEach ( key => {
12+ for ( const key in fields ) {
913 delete clone [ key ] ;
10- } ) ;
14+ }
1115 }
1216
1317 return clone ;
14- }
18+ } ;
19+
20+ export default omit ;
Original file line number Diff line number Diff line change 1+ const pick = < T extends object , K extends keyof T > (
2+ oriObj : T ,
3+ fields : K [ ] | readonly K [ ] ,
4+ ) : Pick < T , K > => {
5+ if ( ! oriObj ) {
6+ return { } as Pick < T , K > ;
7+ }
8+
9+ const result = { } as Pick < T , K > ;
10+
11+ if ( Array . isArray ( fields ) ) {
12+ for ( const key of fields ) {
13+ result [ key ] = oriObj [ key ] ;
14+ }
15+ }
16+
17+ return result ;
18+ } ;
19+
20+ export default pick ;
Original file line number Diff line number Diff line change 1+ import pick from '../src/pick' ;
2+
3+ describe ( 'omit' , ( ) => {
4+ it ( 'should work' , ( ) => {
5+ const ret = pick ( { a : 1 , b : 2 , c : 3 } , [ 'a' ] ) ;
6+ expect ( ret ) . toEqual ( { a : 1 } ) ;
7+ } ) ;
8+
9+ it ( 'invalidate array' , ( ) => {
10+ const ret = pick ( { bamboo : 1 } , null ) ;
11+ expect ( ret ) . toEqual ( { } ) ;
12+ } ) ;
13+
14+ it ( 'readonly array' , ( ) => {
15+ const ret = pick ( { a : 1 , b : 2 } , [ 'b' ] as const ) ;
16+ expect ( ret ) . toEqual ( { b : 2 } ) ;
17+ } ) ;
18+ } ) ;
You can’t perform that action at this time.
0 commit comments