microsoft / microsoft/TypeScript

"const" was transformed to "var" when target is "esnext"

Open
#59,877 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Bug Domain: JS Emit Help Wanted
Dominant language
Go
Stars
111k
Forks
14.4k
Avg merge
1d 19h
Merged PRs (30d)
117

Description

🔎 Search Terms

transform, const, var, target, ECMA, esnext

🕗 Version & Regression Information
  • This is the behavior in every version I tried from Version 5.4 to Version 5.7.0-dev.20240904
⏯ Playground Link

No response

💻 Code
export const cilBlurLinear : string [ ] = [  ,  ] 
const [ ,  ] = cilBlurLinear;
🙁 Actual behavior

The JS code generated by tsc is as follows:

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cilBlurLinear = void 0;
exports.cilBlurLinear = [,];
var ;
🙂 Expected behavior

“const” should be translated as "const" instead of "var", as the target in my configuration file is "esnext".

Additional information about the issue

tsconfig.json:

{
  "compilerOptions": {
    "target": "ESNext",
    "module": "esnext",
    "moduleResolution": "Node",
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "lib": ["es2023","dom"],
    "noEmitOnError":true,
    "force":true,
    "strict":true
  },
  "include": [
    "TScorpus/*"
  ],
  "exclude": [
    "node_modules"
  ]
}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the provided code with tsc and the shown tsconfig.json, then inspect the compiler's handling of const destructuring when the target is ESNext. Done means the emitted JavaScript preserves const and does not produce the invalid var output; add a regression test for this case if the repository's existing compiler tests identify a suitable location.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, typescript
Domain
compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.