ts-gems 2.7.4 → 2.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/deep-buildable.d.ts +3 -2
- package/lib/deep-omit.d.ts +9 -8
- package/lib/deep-pick.d.ts +10 -9
- package/lib/deep-readonly.d.ts +3 -2
- package/lib/deep-required.d.ts +3 -2
- package/lib/deep-writable.d.ts +3 -2
- package/lib/helpers.d.ts +10 -9
- package/lib/index.d.ts +1 -0
- package/lib/keys.d.ts +6 -0
- package/lib/omit.d.ts +35 -5
- package/package.json +1 -1
package/lib/deep-buildable.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IfNoDeepValue } from './helpers.js';
|
|
2
|
+
import { OmitNever } from './omit.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Combination of Partial and Writable but deeply
|
|
@@ -6,7 +7,7 @@ import { IfNoDeepValue } from './helpers.js';
|
|
|
6
7
|
export type DeepBuildable<T> = _DeepBuildable<T>;
|
|
7
8
|
type _DeepBuildable<T> =
|
|
8
9
|
IfNoDeepValue<T> extends true ? T
|
|
9
|
-
: { -readonly [P in keyof T]?: _DeepBuildable<Exclude<T[P], undefined>> }
|
|
10
|
+
: OmitNever<{ -readonly [P in keyof T]?: _DeepBuildable<Exclude<T[P], undefined>> }>;
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Combination of Partial and Writable but deeply including arrays
|
|
@@ -16,4 +17,4 @@ type _HighDeepBuildable<T> =
|
|
|
16
17
|
T extends (infer U)[] ? _HighDeepBuildable<U>[]
|
|
17
18
|
: IfNoDeepValue<T> extends true ? T
|
|
18
19
|
: T extends (infer U)[] ? _HighDeepBuildable<U>[]
|
|
19
|
-
: { -readonly [P in keyof T]?: _HighDeepBuildable<Exclude<T[P], undefined>> }
|
|
20
|
+
: OmitNever<{ -readonly [P in keyof T]?: _HighDeepBuildable<Exclude<T[P], undefined>> }>;
|
package/lib/deep-omit.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IfNoDeepValue } from './helpers.js';
|
|
2
2
|
import { OptionalKeys, ReadonlyKeys, RequiredKeys, WritableKeys } from './keys';
|
|
3
|
+
import { OmitNever } from './omit.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Omit all optional properties in T deeply
|
|
@@ -7,7 +8,7 @@ import { OptionalKeys, ReadonlyKeys, RequiredKeys, WritableKeys } from './keys';
|
|
|
7
8
|
export type DeepOmitOptional<T> = _DeepOmitOptional<Exclude<T, undefined>>;
|
|
8
9
|
type _DeepOmitOptional<T, K extends keyof T = Exclude<keyof T, OptionalKeys<T>>> =
|
|
9
10
|
IfNoDeepValue<T> extends true ? T
|
|
10
|
-
: { [P in K]-?: DeepOmitOptional<T[P]> }
|
|
11
|
+
: OmitNever<{ [P in K]-?: DeepOmitOptional<T[P]> }>;
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Omit all optional properties in T deeply including arrays
|
|
@@ -16,7 +17,7 @@ export type HighDeepOmitOptional<T> = _HighDeepOmitOptional<Exclude<T, undefined
|
|
|
16
17
|
type _HighDeepOmitOptional<T, K extends keyof T = Exclude<keyof T, OptionalKeys<T>>> =
|
|
17
18
|
T extends (infer U)[] ? HighDeepOmitOptional<U>[]
|
|
18
19
|
: IfNoDeepValue<T> extends true ? T
|
|
19
|
-
: { [P in K]-?: HighDeepOmitOptional<T[P]> }
|
|
20
|
+
: OmitNever<{ [P in K]-?: HighDeepOmitOptional<T[P]> }>;
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
/**
|
|
@@ -25,7 +26,7 @@ type _HighDeepOmitOptional<T, K extends keyof T = Exclude<keyof T, OptionalKeys<
|
|
|
25
26
|
export type DeepOmitRequired<T> = _DeepOmitRequired<Exclude<T, undefined>>;
|
|
26
27
|
type _DeepOmitRequired<T, J extends keyof T = Exclude<keyof T, RequiredKeys<T>>> =
|
|
27
28
|
IfNoDeepValue<T> extends true ? T
|
|
28
|
-
: { [P in J]?: DeepOmitRequired<Exclude<T[P], undefined>> }
|
|
29
|
+
: OmitNever<{ [P in J]?: DeepOmitRequired<Exclude<T[P], undefined>> }>;
|
|
29
30
|
|
|
30
31
|
|
|
31
32
|
/**
|
|
@@ -35,7 +36,7 @@ export type HighDeepOmitRequired<T> = _HighDeepOmitRequired<Exclude<T, undefined
|
|
|
35
36
|
type _HighDeepOmitRequired<T, J extends keyof T = Exclude<keyof T, RequiredKeys<T>>> =
|
|
36
37
|
T extends (infer U)[] ? HighDeepOmitRequired<U>[]
|
|
37
38
|
: IfNoDeepValue<T> extends true ? T
|
|
38
|
-
: { [P in J]?: HighDeepOmitRequired<Exclude<T[P], undefined>> }
|
|
39
|
+
: OmitNever<{ [P in J]?: HighDeepOmitRequired<Exclude<T[P], undefined>> }>;
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
/**
|
|
@@ -44,7 +45,7 @@ type _HighDeepOmitRequired<T, J extends keyof T = Exclude<keyof T, RequiredKeys<
|
|
|
44
45
|
export type DeepOmitReadonly<T> = _DeepOmitReadonly<Exclude<T, undefined>>;
|
|
45
46
|
type _DeepOmitReadonly<T, J extends keyof T = Exclude<keyof T, ReadonlyKeys<T>>> =
|
|
46
47
|
IfNoDeepValue<T> extends true ? T
|
|
47
|
-
: { [P in J]: DeepOmitReadonly<T[P]> }
|
|
48
|
+
: OmitNever<{ [P in J]: DeepOmitReadonly<T[P]> }>;
|
|
48
49
|
|
|
49
50
|
|
|
50
51
|
/**
|
|
@@ -54,7 +55,7 @@ export type HighDeepOmitReadonly<T> = _HighDeepOmitReadonly<Exclude<T, undefined
|
|
|
54
55
|
type _HighDeepOmitReadonly<T, J extends keyof T = Exclude<keyof T, ReadonlyKeys<T>>> =
|
|
55
56
|
T extends (infer U)[] ? HighDeepOmitReadonly<U>[]
|
|
56
57
|
: IfNoDeepValue<T> extends true ? T
|
|
57
|
-
: { [P in J]: HighDeepOmitReadonly<T[P]> }
|
|
58
|
+
: OmitNever<{ [P in J]: HighDeepOmitReadonly<T[P]> }>;
|
|
58
59
|
|
|
59
60
|
|
|
60
61
|
/**
|
|
@@ -63,7 +64,7 @@ type _HighDeepOmitReadonly<T, J extends keyof T = Exclude<keyof T, ReadonlyKeys<
|
|
|
63
64
|
export type DeepOmitWritable<T> = _DeepOmitWritable<Exclude<T, undefined>>
|
|
64
65
|
type _DeepOmitWritable<T, K extends keyof T = Exclude<keyof T, WritableKeys<T>>> =
|
|
65
66
|
IfNoDeepValue<T> extends true ? T
|
|
66
|
-
: { readonly [P in K]: DeepOmitWritable<T[P]> }
|
|
67
|
+
: OmitNever<{ readonly [P in K]: DeepOmitWritable<T[P]> }>
|
|
67
68
|
|
|
68
69
|
|
|
69
70
|
/**
|
|
@@ -73,4 +74,4 @@ export type HighDeepOmitWritable<T> = _HighDeepOmitWritable<Exclude<T, undefined
|
|
|
73
74
|
type _HighDeepOmitWritable<T, K extends keyof T = Exclude<keyof T, WritableKeys<T>>> =
|
|
74
75
|
T extends (infer U)[] ? HighDeepOmitWritable<U>[]
|
|
75
76
|
: IfNoDeepValue<T> extends true ? T
|
|
76
|
-
: { readonly [P in K]: HighDeepOmitWritable<T[P]> }
|
|
77
|
+
: OmitNever<{ readonly [P in K]: HighDeepOmitWritable<T[P]> }>
|
package/lib/deep-pick.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IfNoDeepValue } from './helpers.js';
|
|
2
2
|
import { JsonKeys, OptionalKeys, ReadonlyKeys, RequiredKeys, WritableKeys } from './keys';
|
|
3
|
+
import { OmitNever } from './omit.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Pick all optional properties in T deeply
|
|
@@ -7,7 +8,7 @@ import { JsonKeys, OptionalKeys, ReadonlyKeys, RequiredKeys, WritableKeys } from
|
|
|
7
8
|
export type DeepPickOptional<T> = _DeepPickOptional<Exclude<T, undefined>>;
|
|
8
9
|
type _DeepPickOptional<T, K extends keyof T = OptionalKeys<T>> =
|
|
9
10
|
IfNoDeepValue<T> extends true ? T
|
|
10
|
-
: { [P in K]?: DeepPickOptional<T[P]> }
|
|
11
|
+
: OmitNever<{ [P in K]?: DeepPickOptional<T[P]> }>;
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Pick all optional properties in T deeply including arrays
|
|
@@ -16,7 +17,7 @@ export type HighDeepPickOptional<T> = _HighDeepPickOptional<Exclude<T, undefined
|
|
|
16
17
|
type _HighDeepPickOptional<T, K extends keyof T = OptionalKeys<T>> =
|
|
17
18
|
T extends (infer U)[] ? HighDeepPickOptional<U>[]
|
|
18
19
|
: IfNoDeepValue<T> extends true ? T
|
|
19
|
-
: { [P in K]?: HighDeepPickOptional<T[P]> }
|
|
20
|
+
: OmitNever<{ [P in K]?: HighDeepPickOptional<T[P]> }>;
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
/**
|
|
@@ -25,7 +26,7 @@ type _HighDeepPickOptional<T, K extends keyof T = OptionalKeys<T>> =
|
|
|
25
26
|
export type DeepPickRequired<T> = _DeepPickRequired<Exclude<T, undefined>>;
|
|
26
27
|
type _DeepPickRequired<T, J extends keyof T = RequiredKeys<T>> =
|
|
27
28
|
IfNoDeepValue<T> extends true ? T
|
|
28
|
-
: { [P in J]-?: DeepPickRequired<T[P]> }
|
|
29
|
+
: OmitNever<{ [P in J]-?: DeepPickRequired<T[P]> }>;
|
|
29
30
|
|
|
30
31
|
|
|
31
32
|
/**
|
|
@@ -35,7 +36,7 @@ export type HighDeepPickRequired<T> = _HighDeepPickRequired<Exclude<T, undefined
|
|
|
35
36
|
type _HighDeepPickRequired<T, J extends keyof T = RequiredKeys<T>> =
|
|
36
37
|
T extends (infer U)[] ? HighDeepPickRequired<U>[]
|
|
37
38
|
: IfNoDeepValue<T> extends true ? T
|
|
38
|
-
: { [P in J]-?: HighDeepPickRequired<T[P]> }
|
|
39
|
+
: OmitNever<{ [P in J]-?: HighDeepPickRequired<T[P]> }>;
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
/**
|
|
@@ -44,7 +45,7 @@ type _HighDeepPickRequired<T, J extends keyof T = RequiredKeys<T>> =
|
|
|
44
45
|
export type DeepPickReadonly<T> = _DeepPickReadonly<Exclude<T, undefined>>;
|
|
45
46
|
type _DeepPickReadonly<T, K extends keyof T = ReadonlyKeys<T>> =
|
|
46
47
|
IfNoDeepValue<T> extends true ? T
|
|
47
|
-
: { [P in K]: DeepPickReadonly<T[P]> }
|
|
48
|
+
: OmitNever<{ [P in K]: DeepPickReadonly<T[P]> }>;
|
|
48
49
|
|
|
49
50
|
/**
|
|
50
51
|
* Pick all readonly properties in T deeply including arrays
|
|
@@ -53,7 +54,7 @@ export type HighDeepPickReadonly<T> = _HighDeepPickReadonly<Exclude<T, undefined
|
|
|
53
54
|
type _HighDeepPickReadonly<T, K extends keyof T = ReadonlyKeys<T>> =
|
|
54
55
|
T extends (infer U)[] ? HighDeepPickReadonly<U>[]
|
|
55
56
|
: IfNoDeepValue<T> extends true ? T
|
|
56
|
-
: { [P in K]: HighDeepPickReadonly<T[P]> }
|
|
57
|
+
: OmitNever<{ [P in K]: HighDeepPickReadonly<T[P]> }>;
|
|
57
58
|
|
|
58
59
|
|
|
59
60
|
/**
|
|
@@ -62,7 +63,7 @@ type _HighDeepPickReadonly<T, K extends keyof T = ReadonlyKeys<T>> =
|
|
|
62
63
|
export type DeepPickWritable<T> = _DeepPickWritable<Exclude<T, undefined>>;
|
|
63
64
|
type _DeepPickWritable<T, K extends keyof T = WritableKeys<T>> =
|
|
64
65
|
IfNoDeepValue<T> extends true ? T
|
|
65
|
-
: { [P in K]: DeepPickWritable<T[P]> }
|
|
66
|
+
: OmitNever<{ [P in K]: DeepPickWritable<T[P]> }>;
|
|
66
67
|
|
|
67
68
|
/**
|
|
68
69
|
* Pick all writable properties in T deeply including arrays
|
|
@@ -71,7 +72,7 @@ export type HighDeepPickWritable<T> = _HighDeepPickWritable<Exclude<T, undefined
|
|
|
71
72
|
type _HighDeepPickWritable<T, K extends keyof T = WritableKeys<T>> =
|
|
72
73
|
T extends (infer U)[] ? HighDeepPickWritable<U>[]
|
|
73
74
|
: IfNoDeepValue<T> extends true ? T
|
|
74
|
-
: { [P in K]: HighDeepPickWritable<T[P]> }
|
|
75
|
+
: OmitNever<{ [P in K]: HighDeepPickWritable<T[P]> }>;
|
|
75
76
|
|
|
76
77
|
|
|
77
78
|
/**
|
|
@@ -81,4 +82,4 @@ export type DeepPickJson<T> = _DeepPickJson<Exclude<T, undefined>>;
|
|
|
81
82
|
type _DeepPickJson<T, Keys extends keyof T = JsonKeys<T>> =
|
|
82
83
|
T extends (infer U)[] ? DeepPickJson<U>[]
|
|
83
84
|
: IfNoDeepValue<T> extends true ? T
|
|
84
|
-
: { [P in Keys]: DeepPickJson<T[P]> }
|
|
85
|
+
: OmitNever<{ [P in Keys]: DeepPickJson<T[P]> }>;
|
package/lib/deep-readonly.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IfNoDeepValue } from './helpers.js';
|
|
2
|
+
import { OmitNever } from './omit.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Make all properties in T readonly deeply
|
|
@@ -6,7 +7,7 @@ import { IfNoDeepValue } from './helpers.js';
|
|
|
6
7
|
export type DeepReadonly<T> = _DeepReadonly<T>;
|
|
7
8
|
type _DeepReadonly<T> =
|
|
8
9
|
IfNoDeepValue<T> extends true ? T
|
|
9
|
-
: { readonly [P in keyof T]: _DeepReadonly<T[P]> }
|
|
10
|
+
: OmitNever<{ readonly [P in keyof T]: _DeepReadonly<T[P]> }>;
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Make all properties in T readonly deeply
|
|
@@ -15,5 +16,5 @@ export type HighDeepReadonly<T> = _HighDeepReadonly<T>;
|
|
|
15
16
|
type _HighDeepReadonly<T> =
|
|
16
17
|
T extends (infer U)[] ? _HighDeepReadonly<U>[]
|
|
17
18
|
: IfNoDeepValue<T> extends true ? T
|
|
18
|
-
: { readonly [P in keyof T]: _HighDeepReadonly<T[P]> }
|
|
19
|
+
: OmitNever<{ readonly [P in keyof T]: _HighDeepReadonly<T[P]> }>;
|
|
19
20
|
|
package/lib/deep-required.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IfNoDeepValue } from './helpers.js';
|
|
2
|
+
import { OmitNever } from './omit.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Make all properties in T required deeply
|
|
@@ -6,7 +7,7 @@ import { IfNoDeepValue } from './helpers.js';
|
|
|
6
7
|
export type DeepRequired<T> = _DeepRequired<T>;
|
|
7
8
|
type _DeepRequired<T> =
|
|
8
9
|
IfNoDeepValue<T> extends true ? T
|
|
9
|
-
: { [P in keyof T]-?: _DeepRequired<Exclude<T[P], undefined>> }
|
|
10
|
+
: OmitNever<{ [P in keyof T]-?: _DeepRequired<Exclude<T[P], undefined>> }>;
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
/**
|
|
@@ -16,4 +17,4 @@ export type HighDeepRequired<T> = _HighDeepRequired<T>;
|
|
|
16
17
|
type _HighDeepRequired<T> =
|
|
17
18
|
T extends (infer U)[] ? _HighDeepRequired<U>[]
|
|
18
19
|
: IfNoDeepValue<T> extends true ? T
|
|
19
|
-
: { [P in keyof T]-?: _HighDeepRequired<Exclude<T[P], undefined>> }
|
|
20
|
+
: OmitNever<{ [P in keyof T]-?: _HighDeepRequired<Exclude<T[P], undefined>> }>;
|
package/lib/deep-writable.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IfNoDeepValue } from './helpers.js';
|
|
2
|
+
import { OmitNever } from './omit.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Make all properties in T writable deeply
|
|
@@ -6,7 +7,7 @@ import { IfNoDeepValue } from './helpers.js';
|
|
|
6
7
|
export type DeepWritable<T> = _DeepWritable<T>;
|
|
7
8
|
type _DeepWritable<T> =
|
|
8
9
|
IfNoDeepValue<T> extends true ? T
|
|
9
|
-
: { -readonly [P in keyof T]: _DeepWritable<T[P]> }
|
|
10
|
+
: OmitNever<{ -readonly [P in keyof T]: _DeepWritable<T[P]> }>;
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
/**
|
|
@@ -16,4 +17,4 @@ export type HighDeepWritable<T> = _HighDeepWritable<T>;
|
|
|
16
17
|
type _HighDeepWritable<T> =
|
|
17
18
|
T extends (infer U)[] ? _HighDeepWritable<U>[]
|
|
18
19
|
: IfNoDeepValue<T> extends true ? T
|
|
19
|
-
: { -readonly [P in keyof T]: _HighDeepWritable<T[P]> }
|
|
20
|
+
: OmitNever<{ -readonly [P in keyof T]: _HighDeepWritable<T[P]> }>;
|
package/lib/helpers.d.ts
CHANGED
|
@@ -8,12 +8,13 @@ export type IfNoDeepValue<T> = _IfNoDeepValue<T>
|
|
|
8
8
|
type _IfNoDeepValue<T> =
|
|
9
9
|
T extends Builtin ? true
|
|
10
10
|
: IfTuple<T> extends true ? true
|
|
11
|
-
:
|
|
12
|
-
: T extends
|
|
13
|
-
: T extends
|
|
14
|
-
: T extends
|
|
15
|
-
: T extends
|
|
16
|
-
: T extends
|
|
17
|
-
: T extends
|
|
18
|
-
: T extends any
|
|
19
|
-
:
|
|
11
|
+
: T extends Function ? true
|
|
12
|
+
: IfClass<T> extends true ? true
|
|
13
|
+
: T extends Map<any, any> ? true
|
|
14
|
+
: T extends ReadonlyMap<any, any> ? true
|
|
15
|
+
: T extends WeakMap<any, any> ? true
|
|
16
|
+
: T extends Set<any> ? true
|
|
17
|
+
: T extends ReadonlySet<any> ? true
|
|
18
|
+
: T extends WeakSet<any> ? true
|
|
19
|
+
: T extends any[] ? true
|
|
20
|
+
: false;
|
package/lib/index.d.ts
CHANGED
package/lib/keys.d.ts
CHANGED
package/lib/omit.d.ts
CHANGED
|
@@ -6,30 +6,60 @@ import {
|
|
|
6
6
|
WritableKeys
|
|
7
7
|
} from './keys';
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* OmitNever<T> is a type that omits all properties with a value of type "never".
|
|
11
|
+
*
|
|
12
|
+
* @template T - The original type
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* type MyType = {
|
|
16
|
+
* a: string;
|
|
17
|
+
* b: number;
|
|
18
|
+
* c?: never;
|
|
19
|
+
* };
|
|
20
|
+
*
|
|
21
|
+
* type Result = OmitNever<MyType>;
|
|
22
|
+
* // Result is:
|
|
23
|
+
* // {
|
|
24
|
+
* // a: string;
|
|
25
|
+
* // b: number;
|
|
26
|
+
* // }
|
|
27
|
+
*/
|
|
28
|
+
export type OmitNever<T> = {
|
|
29
|
+
[K in keyof T as (Exclude<T[K], undefined> extends never ? never : K)]: T[K]
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Construct a type with the properties of T except for those in type K,
|
|
34
|
+
* while preserving strict type checking.
|
|
35
|
+
*
|
|
36
|
+
* @template T - The original type.
|
|
37
|
+
* @template K - The keys of the properties to be removed from the original type.
|
|
38
|
+
*/
|
|
9
39
|
export type StrictOmit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
|
|
10
40
|
|
|
11
41
|
/**
|
|
12
42
|
* Omit all optional properties in T
|
|
13
43
|
*/
|
|
14
|
-
export type OmitOptional<T> = Omit<T, OptionalKeys<T
|
|
44
|
+
export type OmitOptional<T> = OmitNever<Omit<T, OptionalKeys<T>>>;
|
|
15
45
|
|
|
16
46
|
/**
|
|
17
47
|
* Omit all required properties in T
|
|
18
48
|
*/
|
|
19
|
-
export type OmitRequired<T> = Omit<T, RequiredKeys<T
|
|
49
|
+
export type OmitRequired<T> = OmitNever<Omit<T, RequiredKeys<T>>>;
|
|
20
50
|
|
|
21
51
|
/**
|
|
22
52
|
* Omit all readonly properties in T
|
|
23
53
|
*/
|
|
24
|
-
export type OmitReadonly<T> = Omit<T, ReadonlyKeys<T
|
|
54
|
+
export type OmitReadonly<T> = OmitNever<Omit<T, ReadonlyKeys<T>>>;
|
|
25
55
|
|
|
26
56
|
|
|
27
57
|
/**
|
|
28
58
|
* Omit all writable properties in T
|
|
29
59
|
*/
|
|
30
|
-
export type OmitWritable<T> = Omit<T, WritableKeys<T
|
|
60
|
+
export type OmitWritable<T> = OmitNever<Omit<T, WritableKeys<T>>>;
|
|
31
61
|
|
|
32
62
|
/**
|
|
33
63
|
* Omit all JSON friendly properties in T
|
|
34
64
|
*/
|
|
35
|
-
export type OmitJson<T> = Omit<T, JsonKeys<T
|
|
65
|
+
export type OmitJson<T> = OmitNever<Omit<T, JsonKeys<T>>>;
|