next.js icon indicating copy to clipboard operation
next.js copied to clipboard

Support TypeScript 4.9

Open michaelhays opened this issue 2 years ago • 0 comments

Verify canary release

  • [X] I verified that the issue exists in the latest Next.js canary release

Provide environment information

Operating System:
  Platform: linux
  Arch: x64
  Version: #58-Ubuntu SMP Thu Oct 13 08:03:55 UTC 2022
Binaries:
  Node: 16.18.0
  npm: 8.19.2
  Yarn: N/A
  pnpm: 7.16.0
Relevant packages:
  next: 13.0.4-canary.2
  eslint-config-next: 13.0.3
  react: 18.2.0
  react-dom: 18.2.0

What browser are you using? (if relevant)

No response

How are you deploying your application? (if relevant)

next dev or next start

Describe the Bug

I imagine you might have this on your radar, but I wanted to create this issue to track the progress. TypeScript 4.9 added a satisfies operator that greatly improves type specificity, but Next.js throws an error when trying to use satisfies:

error - ReferenceError: myVariable is not defined
    at Function.__webpack_require__.a (/path/to/project/.next/server/webpack-api-runtime.js:97:13)
    at eval (webpack-internal:///(api)/./src/pages/api/trpc/[trpc].ts:1:21)
    at Object.(api)/./src/pages/api/trpc/[trpc].ts (/path/to/project/.next/server/pages/api/trpc/[trpc].js:2233:1)
    at __webpack_require__ (/path/to/project/.next/server/webpack-api-runtime.js:33:42)
    at __webpack_exec__ (/path/to/project/.next/server/pages/api/trpc/[trpc].js:3485:39)
    at /path/to/project/.next/server/pages/api/trpc/[trpc].js:3486:28
    at Object.<anonymous> (/path/to/project/.next/server/pages/api/trpc/[trpc].js:3489:3)
    at Module._compile (node:internal/modules/cjs/loader:1155:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
    at Module.load (node:internal/modules/cjs/loader:1033:32)
    at Function.Module._load (node:internal/modules/cjs/loader:868:12)
    at Module.require (node:internal/modules/cjs/loader:1057:19)
    at require (node:internal/modules/cjs/helpers:103:18)
    at DevServer.runApi (/path/to/project/node_modules/.pnpm/[email protected]_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/server/next-server.js:467:34)
    at DevServer.handleApiRequest (/path/to/project/node_modules/.pnpm/[email protected]_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/server/next-server.js:812:21)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Object.fn (/path/to/project/node_modules/.pnpm/[email protected]_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/server/next-server.js:736:37)
    at async Router.execute (/path/to/project/node_modules/.pnpm/[email protected]_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/server/router.js:252:36)
    at async DevServer.run (/path/to/project/node_modules/.pnpm/[email protected]_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/server/base-server.js:384:29)
    at async DevServer.run (/path/to/project/node_modules/.pnpm/[email protected]_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/server/dev/next-dev-server.js:732:20)
    at async DevServer.handleRequest (/path/to/project/node_modules/.pnpm/[email protected]_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/server/base-server.js:322:20)

Support for satisfies specifically was created as an issue that was moved to a Discussion: #40895

It looks like Next.js is currently on @swc/core 1.2.203, and TypeScript 4.8.2, and TypeScript 4.9 support wasn't added until swc 1.3.3. I'm guessing these versions need to be bumped in order to support TypeScript 4.9.

Expected Behavior

Should be able to use TypeScript 4.9.

Link to reproduction - Issues with a link to complete (but minimal) reproduction code will be addressed faster

To Reproduce

Create a project with Typescript 4.9, and attempt to use the satisfies operator.

michaelhays avatar Nov 16 '22 08:11 michaelhays