Imagine a complex object with multiple nested fields, including arrays. Your goal is to extract the type of a field based on its path. The path is represented as a string, where nested levels are separated by dots (.
).
This idea is similar to Lodash's get
method, which takes a complex object as its first argument and a dot-separated path as its second argument to retrieve the value at the specified path.
In this challenge, you need to implement a TypeScript utility type LookupProperty<T, Path>
.
This utility type should accept a complex object type T
and extract the type of the field at the specified Path
.
For example:
type Obj = { a: { b: { c: boolean }, d: number } } // expected: boolean type Result1 = LookupProperty<Obj, 'a.b.c'> // expected: number type Result2 = LookupProperty<Obj, 'a.d'> // expected: never => since path not exist type Result2 = LookupProperty<Obj, 'a.b.c.d'>
Note: Notes:
For simplicity, when working with arrays, represent paths using dot notation (e.g., a.1.b
) to access an element at index 1
in array a
.
You can ignore Lodash-style bracket notation paths like a[1].b
.
If the specified path does not exist in the object, your utility type should evaluate to never
.
Code