An Interest In:
Web News this Week
- April 23, 2024
- April 22, 2024
- April 21, 2024
- April 20, 2024
- April 19, 2024
- April 18, 2024
- April 17, 2024
December 14, 2022 09:01 am GMT
Original Link: https://dev.to/tylim88/typescript-generate-full-path-type-and-get-value-type-for-nested-object-4hi
Typescript Generate Full Path Type And Get Value Type Of Nested Object
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 routetype 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]
Original Link: https://dev.to/tylim88/typescript-generate-full-path-type-and-get-value-type-for-nested-object-4hi
Share this article:
Tweet
View Full Article
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To