Skip to content

Commit 90a356c

Browse files
bring type definitions back
1 parent 36a426c commit 90a356c

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@curiousleaf/utils",
33
"description": "A lightweight set of utilities",
4-
"version": "1.0.24",
4+
"version": "1.0.25",
55
"license": "MIT",
66
"type": "module",
77
"author": {

‎src/index.ts‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,26 @@ export * from "./params/params"
1414
export * from "./parsers/parsers"
1515
export * from "./random/random"
1616
export * from "./time/time"
17+
18+
export type WithOptional<Type, Key extends keyof Type> = Pick<Partial<Type>, Key> & Omit<Type, Key>
19+
export type WithRequired<Type, Key extends keyof Type> = Type & { [Prop in Key]-?: Type[Prop] }
20+
21+
export type DeepIdx<T, K extends string> = K extends ""
22+
? T
23+
: K extends keyof T
24+
? T[K]
25+
: K extends `${infer K0}.${infer KR}`
26+
? K0 extends keyof T
27+
? DeepIdx<T[K0], KR>
28+
: never
29+
: never
30+
31+
export type ValidatePath<T, K extends string> = K extends ""
32+
? ""
33+
: K extends keyof T
34+
? K
35+
: K extends `${infer K0}.${infer KR}`
36+
? K0 extends keyof T
37+
? `${K0}.${ValidatePath<T[K0], KR>}`
38+
: Extract<keyof T, string>
39+
: Extract<keyof T, string>

0 commit comments

Comments
 (0)