Skip to content

Commit fae197d

Browse files
committed
Added helper types
1 parent 12d39f7 commit fae197d

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

types/mod.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,47 @@ export type FlipMap<T extends Record<keyof T, keyof any>> = {
66
[K in keyof T as T[K]]: K;
77
};
88

9+
/**
10+
* Make properties K in T optional
11+
*/
12+
export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
13+
14+
/**
15+
* Make properties K in T required
16+
*/
17+
export type RequiredBy<T, K extends keyof T> =
18+
& Omit<T, K>
19+
& Required<Pick<T, K>>;
20+
21+
/**
22+
* Make properties K in T required, and the rest partial
23+
*/
24+
export type RequiredPartialBy<T, K extends keyof T> =
25+
& RequiredBy<
26+
Pick<T, K>,
27+
K
28+
>
29+
& Partial<Omit<T, K>>;
30+
31+
/**
32+
* Make properties K in T readonly
33+
*/
34+
export type ReadonlyBy<T, K extends keyof T> =
35+
& Omit<T, K>
36+
& Readonly<Pick<T, K>>;
37+
938
/**
1039
* Makes an object with readonly properties writable
1140
*/
1241
export type Writeable<T> = { -readonly [P in keyof T]: T[P] };
1342

43+
/**
44+
* Make properties K in T writable
45+
*/
46+
export type WriteableBy<T, K extends keyof T> =
47+
& Omit<T, K>
48+
& Writeable<Pick<T, K>>;
49+
1450
/**
1551
* Gets the values of an object
1652
*/

0 commit comments

Comments
 (0)