You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I think adding support to the code itself would be pretty straignt-forward, as the typescript construct of satisfies can just be ignored and handled as the inner expression:
However, when implementing this, it does not build, due to type conflicts of @babel/types. npm ls @babel/types suggests that there are multiple versions of @babel/types in use, some of which already support satisfies and others don't. satisfies was introduced in TS 4.9, which is supported since babel 7.20.0.
The RC itself does depend on a lower version, but ^7.20 versions are included as a transitive dependency. This might be the reason why the parser does not throw an error, while RC cannot handle it (and BuildHIR doesn't know anything about that).
I also tried upgrading babel oin the entire project, but that seems to be not as trivial as I'd thought. Maybe there is a different solution.
How often does this bug happen?
Every time
What version of React are you using?
19
The text was updated successfully, but these errors were encountered:
For some internal use-cases we need to support older versions of Babel, so unfortunately we can't just upgrade to 7.20. However we can align on a more recent version of @babel/types that does support this ast type, and then handle it as you suggested. Open to PRs!
Note that all errors categorized as todo are places where the compiler knowingly does not support a feature. We don't categorize those as bugs because the compiler is safely skipping compilation of something it can't compile. In general we're open to PRs to add support for additional syntax as long as its part of JS, TS, or Flow. There are some exceptions — for example, we probably won't ever support nested class declarations within components, bc the complexity cost is high enough and it's exceedingly rare. But for everday, uncomplicated things like sastisfies we're open to PRs.
What kind of issue is this?
Link to repro
https://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABAQ1wF5cBGXMfbASzADNqExcMoBbAIwRgG4AdDCAC+QA
Repro steps
The compiler currently cannot handle
TSSatisfiesExpression
Results in
I think adding support to the code itself would be pretty straignt-forward, as the typescript construct of
satisfies
can just be ignored and handled as the inner expression:https://github.com/facebook/react/compare/main...nikeee:react:handle-satisfies-expression?expand=1
However, when implementing this, it does not build, due to type conflicts of
@babel/types
.npm ls @babel/types
suggests that there are multiple versions of@babel/types
in use, some of which already supportsatisfies
and others don't.satisfies
was introduced in TS 4.9, which is supported since babel 7.20.0.The RC itself does depend on a lower version, but ^7.20 versions are included as a transitive dependency. This might be the reason why the parser does not throw an error, while RC cannot handle it (and BuildHIR doesn't know anything about that).
I also tried upgrading babel oin the entire project, but that seems to be not as trivial as I'd thought. Maybe there is a different solution.
How often does this bug happen?
Every time
What version of React are you using?
19
The text was updated successfully, but these errors were encountered: