다음을 통해 공유


NarrowedModel type

선택한 필드만 포함하도록 모델 형식의 범위를 좁혀줍니다.

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>