@@ -126,36 +126,19 @@ export const readPackageJson = (rootPath: string): undefined | PkgJson => {
126
126
export const isObject = ( obj : unknown ) : obj is Record < string , any > =>
127
127
Object . prototype . toString . call ( obj ) === '[object Object]' ;
128
128
129
- type OmitDeep < T , K extends string [ ] > = T extends ( infer U ) [ ]
130
- ? OmitDeep < U , K > [ ]
131
- : T extends Record < any , any >
132
- ? { [ P in keyof T as P extends K [ number ] ? never : P ] : OmitDeep < T [ P ] , K > }
133
- : T ;
134
-
135
- export function omitDeep < T extends object , K extends string [ ] > (
129
+ export function omit < T extends object , U extends keyof T > (
136
130
obj : T ,
137
- keys : K ,
138
- ) : OmitDeep < T , K > {
139
- if ( typeof obj === 'string' || typeof obj !== 'object' || obj === null )
140
- return obj as any ;
141
-
142
- if ( Array . isArray ( obj ) ) {
143
- return obj . map ( ( item ) => omitDeep ( item , keys ) ) as any ;
144
- }
145
-
146
- const clone : any = { } ;
147
- for ( const property in obj ) {
148
- if ( keys . includes ( property as string ) ) {
149
- continue ;
150
- }
151
- const value = obj [ property ] ;
152
- if ( value && typeof value === 'object' ) {
153
- clone [ property ] = omitDeep ( value , keys ) ;
154
- } else {
155
- clone [ property ] = value ;
156
- }
157
- }
158
- return clone ;
131
+ keys : ReadonlyArray < U > ,
132
+ ) : Omit < T , U > {
133
+ return Object . keys ( obj ) . reduce (
134
+ ( ret , key ) => {
135
+ if ( ! keys . includes ( key as U ) ) {
136
+ ret [ key as keyof Omit < T , U > ] = obj [ key as keyof Omit < T , U > ] ;
137
+ }
138
+ return ret ;
139
+ } ,
140
+ { } as Omit < T , U > ,
141
+ ) ;
159
142
}
160
143
161
144
export { color } ;
0 commit comments