type FieldWithPossiblyUndefined = GetFieldType, Key> | Extract; type GetIndexedField = K extends keyof T ? T[K] : K extends `${number}` ? '0' extends keyof T ? undefined : number extends keyof T ? T[number] : undefined : undefined; export type GetFieldType = P extends `${infer Left}.${infer Right}` ? Left extends keyof T ? FieldWithPossiblyUndefined : Left extends `${infer FieldKey}[${infer IndexKey}]` ? FieldKey extends keyof T ? FieldWithPossiblyUndefined, IndexKey> | Extract, Right> : undefined : undefined : P extends keyof T ? T[P] : P extends `${infer FieldKey}[${infer IndexKey}]` ? FieldKey extends keyof T ? GetIndexedField, IndexKey> | Extract : undefined : undefined; export declare function getValue>(data: TData, path: TPath, defaultValue?: TDefault): GetFieldType | TDefault; export default getValue;