-
Notifications
You must be signed in to change notification settings - Fork 27k
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
Fixed "Expected jsx identifier" error on TypeScript generics & angle bracket type assertions in .ts files #30619
Fixed "Expected jsx identifier" error on TypeScript generics & angle bracket type assertions in .ts files #30619
Conversation
…bracket type assertions
…-angle-bracket-type-assertions
the correction is very good, just wait for the analysis of the @ijjk |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good 👍 It's just missing an integration test, I'll add one 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great catch @leroydev! I've added some tests for the cases you've outlined so that it will not break in the future 👍
…-angle-bracket-type-assertions
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | leroydev/next.js fixed-jsx-error-on-typescript-generics-and-angle-bracket-type-assertions | Change | |
---|---|---|---|
buildDuration | 22.5s | 22.4s | -126ms |
buildDurationCached | 4.8s | 4.7s | -87ms |
nodeModulesSize | 294 MB | 294 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | leroydev/next.js fixed-jsx-error-on-typescript-generics-and-angle-bracket-type-assertions | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 3.891 | 3.559 | -0.33 |
/ avg req/sec | 642.51 | 702.36 | +59.85 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.939 | 1.86 | -0.08 |
/error-in-render avg req/sec | 1289.3 | 1344.27 | +54.97 |
Client Bundles (main, webpack, commons)
vercel/next.js canary | leroydev/next.js fixed-jsx-error-on-typescript-generics-and-angle-bracket-type-assertions | Change | |
---|---|---|---|
450.HASH.js gzip | 179 B | 179 B | ✓ |
framework-HASH.js gzip | 42.2 kB | 42.2 kB | ✓ |
main-HASH.js gzip | 28 kB | 28 kB | ✓ |
webpack-HASH.js gzip | 1.45 kB | 1.45 kB | ✓ |
Overall change | 71.9 kB | 71.9 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | leroydev/next.js fixed-jsx-error-on-typescript-generics-and-angle-bracket-type-assertions | Change | |
---|---|---|---|
polyfills-a4..dd70.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | leroydev/next.js fixed-jsx-error-on-typescript-generics-and-angle-bracket-type-assertions | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.23 kB | 1.23 kB | ✓ |
_error-HASH.js gzip | 194 B | 194 B | ✓ |
amp-HASH.js gzip | 312 B | 312 B | ✓ |
css-HASH.js gzip | 327 B | 327 B | ✓ |
dynamic-HASH.js gzip | 2.38 kB | 2.38 kB | ✓ |
head-HASH.js gzip | 350 B | 350 B | ✓ |
hooks-HASH.js gzip | 635 B | 635 B | ✓ |
image-HASH.js gzip | 4.44 kB | 4.44 kB | ✓ |
index-HASH.js gzip | 263 B | 263 B | ✓ |
link-HASH.js gzip | 1.87 kB | 1.87 kB | ✓ |
routerDirect..HASH.js gzip | 321 B | 321 B | ✓ |
script-HASH.js gzip | 383 B | 383 B | ✓ |
withRouter-HASH.js gzip | 318 B | 318 B | ✓ |
334f979574ae..6f4.css gzip | 106 B | 106 B | ✓ |
Overall change | 13.1 kB | 13.1 kB | ✓ |
Client Build Manifests
vercel/next.js canary | leroydev/next.js fixed-jsx-error-on-typescript-generics-and-angle-bracket-type-assertions | Change | |
---|---|---|---|
_buildManifest.js gzip | 459 B | 459 B | ✓ |
Overall change | 459 B | 459 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | leroydev/next.js fixed-jsx-error-on-typescript-generics-and-angle-bracket-type-assertions | Change | |
---|---|---|---|
index.html gzip | 534 B | 534 B | ✓ |
link.html gzip | 546 B | 546 B | ✓ |
withRouter.html gzip | 528 B | 528 B | ✓ |
Overall change | 1.61 kB | 1.61 kB | ✓ |
Default Build with SWC
General Overall increase ⚠️
vercel/next.js canary | leroydev/next.js fixed-jsx-error-on-typescript-generics-and-angle-bracket-type-assertions | Change | |
---|---|---|---|
buildDuration | 24.2s | 24.8s | |
buildDurationCached | 4.7s | 4.6s | -57ms |
nodeModulesSize | 294 MB | 294 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | leroydev/next.js fixed-jsx-error-on-typescript-generics-and-angle-bracket-type-assertions | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 3.779 | 3.652 | -0.13 |
/ avg req/sec | 661.48 | 684.6 | +23.12 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.892 | 1.921 | |
/error-in-render avg req/sec | 1321.55 | 1301.14 |
Client Bundles (main, webpack, commons)
vercel/next.js canary | leroydev/next.js fixed-jsx-error-on-typescript-generics-and-angle-bracket-type-assertions | Change | |
---|---|---|---|
450.HASH.js gzip | 179 B | 179 B | ✓ |
framework-HASH.js gzip | 42.3 kB | 42.3 kB | ✓ |
main-HASH.js gzip | 28.2 kB | 28.2 kB | ✓ |
webpack-HASH.js gzip | 1.43 kB | 1.43 kB | ✓ |
Overall change | 72.1 kB | 72.1 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | leroydev/next.js fixed-jsx-error-on-typescript-generics-and-angle-bracket-type-assertions | Change | |
---|---|---|---|
polyfills-a4..dd70.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | leroydev/next.js fixed-jsx-error-on-typescript-generics-and-angle-bracket-type-assertions | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.22 kB | 1.22 kB | ✓ |
_error-HASH.js gzip | 180 B | 180 B | ✓ |
amp-HASH.js gzip | 305 B | 305 B | ✓ |
css-HASH.js gzip | 321 B | 321 B | ✓ |
dynamic-HASH.js gzip | 2.38 kB | 2.38 kB | ✓ |
head-HASH.js gzip | 342 B | 342 B | ✓ |
hooks-HASH.js gzip | 622 B | 622 B | ✓ |
image-HASH.js gzip | 4.46 kB | 4.46 kB | ✓ |
index-HASH.js gzip | 256 B | 256 B | ✓ |
link-HASH.js gzip | 1.91 kB | 1.91 kB | ✓ |
routerDirect..HASH.js gzip | 314 B | 314 B | ✓ |
script-HASH.js gzip | 375 B | 375 B | ✓ |
withRouter-HASH.js gzip | 309 B | 309 B | ✓ |
334f979574ae..6f4.css gzip | 106 B | 106 B | ✓ |
Overall change | 13.1 kB | 13.1 kB | ✓ |
Client Build Manifests
vercel/next.js canary | leroydev/next.js fixed-jsx-error-on-typescript-generics-and-angle-bracket-type-assertions | Change | |
---|---|---|---|
_buildManifest.js gzip | 460 B | 460 B | ✓ |
Overall change | 460 B | 460 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | leroydev/next.js fixed-jsx-error-on-typescript-generics-and-angle-bracket-type-assertions | Change | |
---|---|---|---|
index.html gzip | 535 B | 535 B | ✓ |
link.html gzip | 548 B | 548 B | ✓ |
withRouter.html gzip | 529 B | 529 B | ✓ |
Overall change | 1.61 kB | 1.61 kB | ✓ |
fixes #30456, fixes #30376
This PR makes sure
*.ts
files don't get interpreted as TSX to fix the following TypeScript concepts from causing errors:Generics:
class MyClass<T> {};
Angle bracket type assertions:
const myVar = <any>'test';
Note that the last link states that the angle-bracket syntax can be used except if the code is in a
.tsx
file. So I think it should be possible to use this syntax in a regular.ts
file.I tested this on a pretty big private codebase with 660
.tsx
files and 746.ts
files in which both of the concepts above are used regularly, with this change I don't encounter any errors. :)Bug
fixes #number
contributing.md
-> PR doesn't add new errors