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

issue: Type issue for FieldPathValue in TypeScript v5.0.2 #10121

Closed
1 task done
xsjcTony opened this issue Mar 16, 2023 · 7 comments
Closed
1 task done

issue: Type issue for FieldPathValue in TypeScript v5.0.2 #10121

xsjcTony opened this issue Mar 16, 2023 · 7 comments
Labels
dependency Other library is not compatible TS Typescript related issues

Comments

@xsjcTony
Copy link

xsjcTony commented Mar 16, 2023

Version Number

7.43.5

Codesandbox/Expo snack

https://stackblitz.com/edit/vitejs-vite-6bugf6?file=src/Example.tsx

Steps to reproduce

  1. stop vite dev server
  2. run tsc --noEmit in the terminal

Expected behaviour

No issue should be reported, as it's working with TypeScript 4.x

The working solution in v4.x is provided by @bluebill1049 but it's not working in v5.x anymore #9655

A temp workaround could be using PathValue<T, K> instead of FieldPathValue<T, K> straight away instead, but since it's just a type alias, I've no idea why FieldPathValue is not working.

image

What browsers are you seeing the problem on?

No response

Relevant log output

Argument of type 'FieldPathValue<T, K>' is not assignable to parameter of type 'PathValue<T, K>'.
  Type 'K extends `${infer K}.${infer R}` ? K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never : K extends keyof T ? T[K] : K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never' is not assignable to type 'PathValue<T, K>'.
    Type '(K extends keyof T ? T[K] : K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never) | (string extends keyof T ? string extends Path<...> ? PathValue<...> : never : never)' is not assignable to type 'PathValue<T, K>'.
      Type 'K extends keyof T ? T[K] : K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never' is not assignable to type 'PathValue<T, K>'.
        Type 'T[K] | (K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never)' is not assignable to type 'PathValue<T, K>'.
          Type 'K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never' is not assignable to type 'PathValue<T, K>'.
            Type 'T extends readonly (infer V)[] ? V : never' is not assignable to type 'PathValue<T, K>'.
              Type 'unknown' is not assignable to type 'PathValue<T, K>'.
                Type 'K extends `${infer K}.${infer R}` ? K extends keyof T ? R extends import("C:/dev/gml/node_modules/react-hook-form/dist/types/path/eager").Path<T[K]> ? import("C:/dev/gml/node_modules/react-hook-form/dist/types/path/eager").PathValue<...> : never : K extends `${number}` ? T extends readonly (infer V)[] ? import("C:/d...' is not assignable to type 'K extends `${infer K}.${infer R}` ? K extends keyof T ? R extends import("C:/dev/gml/node_modules/react-hook-form/dist/types/path/eager").Path<T[K]> ? import("C:/dev/gml/node_modules/react-hook-form/dist/types/path/eager").PathValue<...> : never : K extends `${number}` ? T extends readonly (infer V)[] ? import("C:/d...'. Two different types with this name exist, but they are unrelated.
                  Type '(K extends keyof T ? T[K] : K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never) | (string extends keyof T ? string extends Path<...> ? PathValue<...> : never : never)' is not assignable to type 'K extends `${infer K}.${infer R}` ? K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never : K extends keyof T ? T[K] : K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never'.
                    Type 'K extends keyof T ? T[K] : K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never' is not assignable to type 'K extends `${infer K}.${infer R}` ? K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never : K extends keyof T ? T[K] : K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never'.
                      Type 'T[K] | (K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never)' is not assignable to type 'K extends `${infer K}.${infer R}` ? K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never : K extends keyof T ? T[K] : K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never'.
                        Type 'K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never' is not assignable to type 'K extends `${infer K}.${infer R}` ? K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never : K extends keyof T ? T[K] : K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never'.
                          Type 'T extends readonly (infer V)[] ? V : never' is not assignable to type 'K extends `${infer K}.${infer R}` ? K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never : K extends keyof T ? T[K] : K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never'.
                            Type 'unknown' is not assignable to type 'K extends `${infer K}.${infer R}` ? K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never : K extends keyof T ? T[K] : K extends `${number}` ? T extends readonly (infer V)[] ? V : never : never'.
                              Type '`${K}` extends keyof T ? `${R}` extends Path<T[keyof T & `${K}`]> ? PathValue<T[keyof T & `${K}`], Path<T[keyof T & `${K}`]> & `${R}`> : never : `${K}` extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never' is not assignable to type 'K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never'.
                                Type '(`${R}` extends Path<T[keyof T & `${K}`]> ? PathValue<T[keyof T & `${K}`], Path<T[keyof T & `${K}`]> & `${R}`> : never) | (`${K}` extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never)' is not assignable to type 'K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never'.
                                  Type '`${R}` extends Path<T[keyof T & `${K}`]> ? PathValue<T[keyof T & `${K}`], Path<T[keyof T & `${K}`]> & `${R}`> : never' is not assignable to type 'K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never'.
                                    Type 'PathValue<T[keyof T & `${K}`], Path<T[keyof T & `${K}`]> & `${R}`>' is not assignable to type 'K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never'.
                                      Type 'Path<T[keyof T & `${K}`]> & `${R}` extends `${infer K}.${infer R}` ? K extends keyof T[keyof T & `${K}`] ? R extends Path<T[keyof T & `${K}`][K]> ? PathValue<...> : never : K extends `${number}` ? T[keyof T & `${K}`] extends readonly (infer V)[] ? PathValue<...> : never : never : Path<...> & `${R}` extends keyof T[k...' is not assignable to type 'K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never'.
                                        Type '(Path<T[keyof T & `${K}`]> & `${R}` extends keyof T[keyof T & `${K}`] ? T[keyof T & `${K}`][keyof T[keyof T & `${K}`] & Path<T[keyof T & `${K}`]> & `${R}`] : Path<...> & `${R}` extends `${number}` ? T[keyof T & `${K}`] extends readonly (infer V)[] ? V : never : never) | (string extends keyof T[keyof T & `${K}`] ? st...' is not assignable to type 'K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never'.
                                          Type 'Path<T[keyof T & `${K}`]> & `${R}` extends keyof T[keyof T & `${K}`] ? T[keyof T & `${K}`][keyof T[keyof T & `${K}`] & Path<T[keyof T & `${K}`]> & `${R}`] : Path<...> & `${R}` extends `${number}` ? T[keyof T & `${K}`] extends readonly (infer V)[] ? V : never : never' is not assignable to type 'K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never'.
                                            Type 'T[keyof T & `${K}`][keyof T[keyof T & `${K}`] & Path<T[keyof T & `${K}`]> & `${R}`] | (Path<T[keyof T & `${K}`]> & `${R}` extends `${number}` ? T[keyof T & `${K}`] extends readonly (infer V)[] ? V : never : never)' is not assignable to type 'K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never'.
                                              Type 'Path<T[keyof T & `${K}`]> & `${R}` extends `${number}` ? T[keyof T & `${K}`] extends readonly (infer V)[] ? V : never : never' is not assignable to type 'K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never'.
                                                Type 'T[keyof T & `${K}`] extends readonly (infer V)[] ? V : never' is not assignable to type 'K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never'.
                                                  Type 'unknown' is not assignable to type 'K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${number}` ? T extends readonly (infer V)[] ? PathValue<...> : never : never'.

Code of Conduct

  • I agree to follow this project's Code of Conduct
@bluebill1049 bluebill1049 added the TS Typescript related issues label Mar 16, 2023
@bluebill1049
Copy link
Member

bluebill1049 commented Mar 16, 2023

We haven't upgraded to v5.

@xsjcTony
Copy link
Author

xsjcTony commented Mar 16, 2023

Yeah, It's not an urgent thing, but since this is an issue so I'm just reporting it to see if it helps.
I haven't found any other type issues in my project using react-hook-form everywhere, so it should be all good.
And I've totally no idea why it won't work since it's just a type alias.🤣
Please take your time and really appreciate the work.

@bluebill1049
Copy link
Member

Thanks, @xsjcTony will get to it #9834 have been really busy with everything at the moment.

@bluebill1049
Copy link
Member

could you try with PathValue instead?

@xsjcTony
Copy link
Author

PathValue is working as I mentioned that this is a temp work around, but I've no idea why FieldPathValue will break since it's just a simple type alias with generic

@bluebill1049
Copy link
Member

Yea, I think that's to do with the latest TS, not much we could do here 😆

@bluebill1049 bluebill1049 added the dependency Other library is not compatible label Mar 18, 2023
@xsjcTony
Copy link
Author

@bluebill1049 Yeah, but really want to know what's going on. Can you please share the reason behind this once you get it? Appreciate it.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 17, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
dependency Other library is not compatible TS Typescript related issues
Projects
None yet
Development

No branches or pull requests

2 participants