NarrowedModel type
Restringe o tipo de modelo para incluir apenas os Campos selecionados
type NarrowedModel<TModel, TFields> = () => (
T extends TModel ? true : false
) extends () => T extends never ? true : false
? TModel
: () => (T extends TModel ? true : false) extends () => T extends object
? true
: false
? TModel
: () => (T extends TModel ? true : false) extends () => T extends any
? true
: false
? TModel
: () => (
T extends TModel ? true : false
) extends () => T extends unknown ? true : false
? TModel
: () => (
T extends TFields ? true : false
) extends () => T extends never ? true : false
? never
: () => (
T extends TFields ? true : false
) extends () => T extends SelectFields<TModel>
? true
: false
? TModel
: SearchPick<TModel, TFields>