🔧 Typescript Generate Full Path Type And Get Value Type Of Nested Object
Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to
Before TS 4.8, it is impossible to build path type for numeric literal path type for type like { A: { 123: boolean } }
<-- we want something like A/123
but it is not possible
however generate path type for { A: Record<number, boolean> }
is possible, that is A/${number}
With TS 4.8, Improved Inference for infer Types in Template String Types made numeric literal path possible
type DeepKey<
T,
K extends keyof T = keyof T
> = K extends string | number// handle numeric key
? T[K] extends infer R
? R extends Record<string, unknown>
?
| `${K}`
| `${K}/${DeepKey<R>}`
: `${K}`
: never // impossible route
: never // impossible route
type DeepValue<
T,
P extends DeepKey<T>,
> = P extends `${infer K}/${infer Rest}`
? T[(K extends `${infer R extends number}` ? R : K) & keyof T] extends infer S
? Rest extends DeepKey<S>
? DeepValue<S, Rest>
: never // impossible route
: never // impossible route
: T[(P extends `${infer R extends number}` ? R : P) & keyof T]
🔧 Always abstract nested types in TypeScript
📈 23.74 Punkte
🔧 Programmierung
🔧 How to deep copy a nested object in Javascript
📈 23.21 Punkte
🔧 Programmierung
🔧 Reference Type and Value Type in Swift
📈 22.38 Punkte
🔧 Programmierung
🔧 Value Type and Reference Type
📈 22.38 Punkte
🔧 Programmierung
🔧 Value Type and Reference Type
📈 22.38 Punkte
🔧 Programmierung
🔧 Value Type and Reference Type 2
📈 22.38 Punkte
🔧 Programmierung
🔧 Value Type and Reference Type
📈 22.38 Punkte
🔧 Programmierung
🔧 Value type vs Reference type in JavaScript
📈 21.16 Punkte
🔧 Programmierung