stitchesjs / stitches

[Not Actively Maintained] CSS-in-JS with near-zero runtime, SSR, multi-variant support, and a best-in-class developer experience.
https://stitches.dev
MIT License
7.73k stars 249 forks source link

"Too complex" union type is created when composing and using `as` prop #1044

Closed Jimmydalecleveland closed 1 month ago

Jimmydalecleveland commented 2 years ago

Bug report

Describe the bug

When composing components (as described in the Stitches Docs), and using the as prop (seen here in the docs), a Typescript error is produced in VS Code and Webstorm.

The error produced:

Expression produces a union type that is too complex to represent.ts(2590)

NOTE: commenting out/removing the lib property in tsconfig.json seems to resolve this issue but I don't know if that is the entire issue or just another symptom.

To Reproduce

Steps to reproduce the behavior, please provide code snippets or a repository:

I've created a reproduction repo that you can use to see the error, and I've had other developers clone it to see if they see the same (they have the same error).

The quick breakdown to reproduce is this:

  1. compose a component created with styled from @stitches/react directly or a config created with createStitches.
  2. use the composed component with an as prop.
  3. have a tsconfig.json with the lib property (seemingly set to anything but mine was ["ES2015"] from an example config)

Expected behavior

I would expect no error should be produced by this very common practice. It feels like the type of problem that could sneak up on you at scale and be hard to fix, which makes me worried about moving forward even with the potential fix I've found.

I don't know enough about it to really say, though. I'm just bringing it to your attention.

Screenshots

Same screenshot from the repo:

System information

Additional context

No extra context, just want to say I really enjoy Stitches and am very impressed with it, as a user of many different CSS-in-JS/TS solutions. The quality and thought put into this project is very impressive, and I'm grateful for all the hard work.