CARVIEW |
Select Language
HTTP/2 200
date: Fri, 18 Jul 2025 12:06:53 GMT
content-type: text/html; charset=utf-8
cache-control: max-age=0, private, must-revalidate
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
link: ; rel=preload; as=fetch; crossorigin=use-credentials
referrer-policy: no-referrer-when-downgrade
server-timing: issue_layout-fragment;desc="issue_layout fragment";dur=265.913052,issue_conversation_content-fragment;desc="issue_conversation_content fragment";dur=636.177799,issue_conversation_sidebar-fragment;desc="issue_conversation_sidebar fragment";dur=54.016453,nginx;desc="NGINX";dur=1.311124,glb;desc="GLB";dur=96.290112
strict-transport-security: max-age=31536000; includeSubdomains; preload
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With, Accept,Accept-Encoding, Accept, X-Requested-With
x-content-type-options: nosniff
x-frame-options: deny
x-voltron-version: fd8fbbc
x-xss-protection: 0
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=%2FlAvARq4k91ozV6dMgdQy82TrIGOf5%2BfZNHcxuWGIOZftl3I6AUU178n9iRd2Lxb67i3%2FheFLXVC34mwzrknIXagxUPHoF57mlyVSrCEssXU%2BfUm2LcuM99e3vBLNzFO6LBsi%2B8%2BH%2F2aFwKootc%2BSDnaUon5qHAfqqD6sID0T%2Bjdv2OyY6CyFI%2FfJexJ5W3kA21h0qTiBRf%2Fjv%2F9wQusGzFm2IixwX6TBWeN3kvpsQIgGtzFlPU7WV%2BtH6tKrsC7zHDa4bkP%2F70b%2FYFM%2FXmoRQ%3D%3D--RUXaDlLym3obcT54--iGU2ZfDZLPsqhR6PS3aa3g%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.779193432.1752840413; Path=/; Domain=github.com; Expires=Sat, 18 Jul 2026 12:06:53 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Sat, 18 Jul 2026 12:06:53 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: EAA8:3620AA:8B1181:A3FDE4:687A38DD
Transpile separate scope in each for loop iteration with let and ES5 · Issue #3915 · microsoft/TypeScript · GitHub
No one assignedNo typeNo projectsNone yetNo branches or pull requests
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 12.9k
Closed
Labels
CommittedThe team has roadmapped this issueThe team has roadmapped this issueEffort: DifficultGood luck.Good luck.FixedA PR has been merged for this issueA PR has been merged for this issueSuggestionAn idea for TypeScriptAn idea for TypeScript
Milestone
Description
Hi,
I was recently surprised to see that TypeScript 1.5 (using ntypescript, so recent master) doesn't support transpiling down to ES5 the separate scope functionality of ES6 when using a for loop with a let-initialized iterator.
For example:
function buttonsWithLet(count, targetElement) {
for (let i = 1; i <= count; i+= 1) { //error 4091: Loop_contains_block_scoped_variable_0_referenced_by_a_function_in_the_loop_This_is_only_supported_in_ECMAScript_6_or_higher
var button = makeButton("alert " + i);
button.onclick = function() {
alert("This is button " + i + ".");
};
targetElement.appendChild(button);
}
}
This is where Error 4091 was implemented.
5f2588f
3b3a94c
Is the TypeScript team open to transpiling this code in ES5 mode? If so, would you accept a pull request? The above code is transpiled by Babel as such which is really clean:
function buttonsWithLet(count, targetElement) {
var _loop = function (i) {
button = makeButton("alert " + i);
button.onclick = function () {
alert("This is button " + i + ".");
};
targetElement.appendChild(button);
};
for (var i = 1; i <= count; i += 1) {
var button;
_loop(i);
}
}
but a plausibly easier transpile might be:
function buttonsWithVarAndIIFE(count, targetElement) {
for (var i = 1; i <= count; i += 1) {
var button = makeButton("alert " + i);
button.onclick = (function (i) {
return function () {
alert("This is button " + i + ".");
};
})(i);
targetElement.appendChild(button);
}
}
Metadata
Metadata
Assignees
Labels
CommittedThe team has roadmapped this issueThe team has roadmapped this issueEffort: DifficultGood luck.Good luck.FixedA PR has been merged for this issueA PR has been merged for this issueSuggestionAn idea for TypeScriptAn idea for TypeScript
Type
Projects
Milestone
Relationships
Development
Issue actions
You can’t perform that action at this time.