@vegajs/config
Version:
A flexible and easy-to-use configuration management service for TypeScript/JavaScript applications, allowing initialization, setting, and retrieval of configuration parameters.
5 lines (4 loc) • 374 B
TypeScript
export type Path<T> = T extends object ? {
[K in keyof T]: K extends string ? T[K] extends object ? `${K}.${Path<T[K]>}` | K : K : never;
}[keyof T] : never;
export type PathValue<T, P extends string> = P extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? Rest extends Path<T[Key]> ? PathValue<T[Key], Rest> : never : never : P extends keyof T ? T[P] : never;