-
-
Notifications
You must be signed in to change notification settings - Fork 132
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
Seemingly strange instanceOf behavior with union of errors #63
Comments
Thanks for the report, I fixed it in this commit, I'll followup with a patch release shortly! |
@gvergnaud amazing! Thanks for resolving. |
I cloned the repo, built it locally, and linked it with my test project. I see the runtime execution is working, but I'm still seeing handlers typed as a union of errors. Attached a quick screenshot of Intellisense in VSCode: Note that |
Here is your own codesandbox example using the prerelease including the fix ( It seems to fix your issue, but please try it again on your own codebase (make sure you aren't hitting Typescript's cache). If you still run in the same issue, could you provide another sandbox with a repro case? |
Huh - fair enough! The codesandbox definitely works as expected, I'll see if I can figure out why VSCode isn't showing me the right Intellisense. Thanks! EDIT: https://codesandbox.io/s/hardcore-brook-egf5e may (or may not be) a worthy issue. If I add optional properties to the sub-class Errors, type inference does not work (as before). My initial problem was that the sub-classes had no extra properties, so type inference didn't introduce meaningful behavior. Here, I'd expect the |
Oh I see, I think that's because a regular error is structurally assignable to your custom one since all of its properties are optional. I'll see what I can do |
Makes sense - my use case is maybe unusual. I'm working on implementing https://doc.rust-lang.org/std/result/enum.Result.html in TypeScript, and using |
Ok this time I think I fixed it for real ;) https://codesandbox.io/s/eloquent-feather-u1zvj?file=/src/index.ts you can try the latest RC and if that works for you I'll turn it in a patch version |
Looks great, @gvergnaud! Thanks again for all your time & effort. |
Released in v3.3.4 |
Describe the bug
Trying to match the following error union type:
I'd expect each
with(instanceOf
to properly narrowerr
, but instead I'm seeing strange types in the handler functions:Code Sandbox with a minimal reproduction case
https://codesandbox.io/s/keen-tesla-jciu2?file=/src/index.ts
Versions
The text was updated successfully, but these errors were encountered: