Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TS compilation perf: lazily evaluate FieldPath for setValue #11019

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 3 additions & 3 deletions reports/api-extractor.md
Expand Up @@ -237,7 +237,7 @@ export type FieldPathByValue<TFieldValues extends FieldValues, TValue> = {
}[FieldPath<TFieldValues>];

// @public
export type FieldPathValue<TFieldValues extends FieldValues, TFieldPath extends FieldPath<TFieldValues>> = PathValue<TFieldValues, TFieldPath>;
export type FieldPathValue<TFieldValues extends FieldValues, TFieldPath extends string> = PathValue<TFieldValues, TFieldPath>;

// @public
export type FieldPathValues<TFieldValues extends FieldValues, TPath extends FieldPath<TFieldValues>[] | readonly FieldPath<TFieldValues>[]> = {} & {
Expand Down Expand Up @@ -436,7 +436,7 @@ export type PathString = string;
// Warning: (ae-forgotten-export) The symbol "ArrayKey" needs to be exported by the entry point index.d.ts
//
// @public
export type PathValue<T, P extends Path<T> | ArrayPath<T>> = T extends any ? P extends `${infer K}.${infer R}` ? K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${ArrayKey}` ? T extends ReadonlyArray<infer V> ? PathValue<V, R & Path<V>> : never : never : P extends keyof T ? T[P] : P extends `${ArrayKey}` ? T extends ReadonlyArray<infer V> ? V : never : never : never;
export type PathValue<T, P extends string> = T extends any ? P extends `${infer K}.${infer R}` ? K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${ArrayKey}` ? T extends ReadonlyArray<infer V> ? PathValue<V, R & Path<V>> : never : never : P extends keyof T ? T[P] : P extends `${ArrayKey}` ? T extends ReadonlyArray<infer V> ? V : never : never : never;

// @public (undocumented)
export type Primitive = null | undefined | string | number | boolean | symbol | bigint;
Expand Down Expand Up @@ -734,7 +734,7 @@ export type UseFormSetError<TFieldValues extends FieldValues> = (name: FieldPath
export type UseFormSetFocus<TFieldValues extends FieldValues> = <TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(name: TFieldName, options?: SetFocusOptions) => void;

// @public
export type UseFormSetValue<TFieldValues extends FieldValues> = <TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(name: TFieldName, value: FieldPathValue<TFieldValues, TFieldName>, options?: SetValueConfig) => void;
export type UseFormSetValue<TFieldValues extends FieldValues> = <TFieldName extends string>(name: FieldPathValue<TFieldValues, TFieldName> extends never ? FieldPath<TFieldValues> : TFieldName, value: FieldPathValue<TFieldValues, TFieldName>, options?: SetValueConfig) => void;

// @public
export function useFormState<TFieldValues extends FieldValues = FieldValues>(props?: UseFormStateProps<TFieldValues>): UseFormStateReturn<TFieldValues>;
Expand Down
6 changes: 4 additions & 2 deletions src/types/form.ts
Expand Up @@ -526,9 +526,11 @@ export type UseFormClearErrors<TFieldValues extends FieldValues> = (
* ```
*/
export type UseFormSetValue<TFieldValues extends FieldValues> = <
TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
TFieldName extends string,
>(
name: TFieldName,
name: FieldPathValue<TFieldValues, TFieldName> extends never
? FieldPath<TFieldValues>
: TFieldName,
value: FieldPathValue<TFieldValues, TFieldName>,
options?: SetValueConfig,
) => void;
Expand Down
4 changes: 2 additions & 2 deletions src/types/path/eager.ts
Expand Up @@ -138,7 +138,7 @@ export type FieldArrayPath<TFieldValues extends FieldValues> =
* PathValue<[number, string], '1'> = string
* ```
*/
export type PathValue<T, P extends Path<T> | ArrayPath<T>> = T extends any
export type PathValue<T, P extends string> = T extends any
? P extends `${infer K}.${infer R}`
? K extends keyof T
? R extends Path<T[K]>
Expand All @@ -163,7 +163,7 @@ export type PathValue<T, P extends Path<T> | ArrayPath<T>> = T extends any
*/
export type FieldPathValue<
TFieldValues extends FieldValues,
TFieldPath extends FieldPath<TFieldValues>,
TFieldPath extends string,
> = PathValue<TFieldValues, TFieldPath>;

/**
Expand Down