Skip to content

Commit 6eec084

Browse files
committed
added dot paths
1 parent b251304 commit 6eec084

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

src/typescript/dot-path.ts

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
interface Change {
2+
name: string;
3+
upp: number;
4+
fee: number;
5+
aum: number;
6+
capacity: number;
7+
cooldown: number;
8+
expiredAt: string;
9+
createdAt: string;
10+
}
11+
12+
interface Item {
13+
id: number;
14+
changes: Change;
15+
}
16+
17+
interface PaginatedData {
18+
items: Item[];
19+
totalCount: number;
20+
hasNextPage: boolean;
21+
hasPreviousPage: boolean;
22+
}
23+
24+
type DotPaths<T, Prefix extends string = ""> =
25+
T extends Array<infer U>
26+
? DotPaths<U, Prefix>
27+
: T extends object
28+
? {
29+
[K in keyof T & string]:
30+
| `${Prefix}${K}`
31+
| DotPaths<T[K], `${Prefix}${K}.`>;
32+
}[keyof T & string]
33+
: never;
34+
35+
type PaginatedDataPaths = DotPaths<PaginatedData>;

0 commit comments

Comments
 (0)