CARVIEW |
Select Language
HTTP/2 200
date: Sat, 19 Jul 2025 00:35:07 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=263.250418,issue_conversation_content-fragment;desc="issue_conversation_content fragment";dur=1206.697436,issue_conversation_sidebar-fragment;desc="issue_conversation_sidebar fragment";dur=50.409983,nginx;desc="NGINX";dur=1.348343,glb;desc="GLB";dur=96.491228
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=9Ycx%2Fl7amJtj8JZ56O2gy5k86t8TB5tFLzmz5CVGZDJrGKNhMdOo70TFJR9CXK8F1ZwoxZinvGYFV8ZHIyp8PJ%2BbL6tmQ1fQ%2FrMlS9Om4PUQCT%2Fcfzll6uPciUbLOr4kevxvZocyh%2BMPWghzbmSZXQacGtDEDnqgy%2BasOjjJzaLBnO2GQLF%2BHbLI%2FYs2MzSZn4tCHAWjGxqCOIUbXNAaFJuaKLQMr0IvyivgDigwgExTzCgjz9sp0JxD9NI0NxvdeLQj9jadRQMvqDqivPyo6A%3D%3D--8BNoS%2Ble4XCXsfys--0K37VJEK1vn0ygpdWqFNbA%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.529877204.1752885306; Path=/; Domain=github.com; Expires=Sun, 19 Jul 2026 00:35:06 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Sun, 19 Jul 2026 00:35:06 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: A8E2:3CD03C:E07AA:15802D:687AE83A
TypeScript 3.4 Iteration Plan Β· Issue #30281 Β· microsoft/TypeScript Β· GitHub

No one assignedNo typeNo projectsNo milestoneNone 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
PlanningIteration plans and roadmappingIteration plans and roadmapping
Description
This document outlines our focused tasks for TypeScript 3.4, as well as some of the discussion that explains how/why we prioritized certain work items. Nothing is set in stone, but we will strive to complete them in a reasonable timeframe.
Dates
Officially, here's the plan:
- March 8th (12pm Pacific): Create a
release-3.4
branch, and update the version to3.4.0-rc
.master
is locked from receiving new feature-work that is not 3.4-bound.- Start a build of TypeScript for Visual Studio for our remote testing team.
- March 13th (12pm Pacific): Last day to adjust the
release-3.4
branch with any feedback we receive.- Kick off a final Visual Studio build if necessary.
- Produce an insiders release for VS Code.
- Morning of March 14th: The release candidate goes out.
- March 22nd (12pm Pacific): Merge
master
intorelease-3.4
one last time, finalize the version as3.4.1
.master
is unlocked. Critical changes for 3.4 must be ported in.- Start a build of TypeScript for Visual Studio for our remote testing team.
- March 27th (12pm Pacific): Last day to adjust the
release-3.4
branch with any feedback we receive.- Kick off a final Visual Studio build if necessary.
- Produce an insiders release for VS Code.
- March 28th: Announcing TypeScript 3.4 π
Conclusions
How to read this:
Symbol | Meaning |
---|---|
β | Work item is done |
ππ»βοΈ | Work item is in progress |
ππ | Work item is in review |
π€ | Work item is in speculative planning phase |
Expected Work Items
- Language
- Compiler
- Incremental build digests for cold builds β
- APIs for composite projects (
--build
mode) π - Investigate plugin API π
- Language service
- Infrastructure
- Benchmarking infrastructure β
- Moving builds to Gulp β
- DefinitelyTyped infrastructure β
- Automated testing language service infrastructure for real world code π€
- ESLint parity with TSLint for semantic checking π
Deferred Work Items
- Negated types
- Partial type argument inference
- Decouple JSX expression types from
JSX
namespace --declaration
with--allowJs
Planning Meeting Notes
Motivations
- Goals and current 6-month roadmap
- GitHub user feedback (πs)
- Feedback from customer interviews and social media.
- Visual Studio and Visual Studio Code feedback and new functionality demands
- Actionable PRs (need to make a call)
- Bug backlog
Discussion
General (compiler/infrastructure/reliability)
- Partial type argument inference
- Current designs have issues, and not enough consensus on team for proposed solutions.
- Declared as on-hold.
- β
const
contexts- Merged β
- Better inference through return types
- Merged β
- Propagation of uninferred generics
- Merged β
readonly
type modifier for arrays/tuples- Merged, but...
- Appears to be a large breaking change
- breaks
.d.ts
consumption for older versions - issues with current consumers of displayed types (e.g.
dts-lint
) - how do you "expect" different displays of the same semantic type.
- breaks
- Needs investigation on workarounds.
- Negated types
- PR out (WIP)
- Open questions:
- Can this model control-flow narrowing?
- If so, does this lead to reasonable user experiences?
- β
globalThis
- β
--declaration
with--allowJS
- Want to, but probably not 3.4-bound given high bug count.
- β
- Private fields
- Still want to wait on stage 4.
- Types publisher infrastructure for DefinitelyTyped
- β
- Performance infrastructure
- Faster incremental cold builds by creating a "digest" file
- "Pick-up-where-you-left-off" builds
--watch
mode without a resident process.- β
- Getting rid of
Jakefile.js
π’ and moving to Gulp- Consolidate on more modern tooling
- Gulp 4 has an easier API
- Potentially faster builds using watch mode
- β
- JSX Factory decoupling
- Pros: High π count, language expressivity, strongly-types JSX Element expressions
- Cons: Can break the world for re-assignments of JSX elements, can create big trees of types, and leaks details about APIs.
- This can break API consumers ππ₯
- Until we have a perf mitigation here, it's stuck. β
- Composite project/
--build
APIs- Provides value to API consumers and makes
--build
more integrated with Webpack, Rollup, gulp, and any other build tool integration. - Potentially an experimental API for 3.4, but work will definitely accrue to something in 3.5 (at latest) with a stable API.
- β
- Provides value to API consumers and makes
- Automated testing infrastructure
- Earlier way to validate against real world codebases on GitHub
- Part of this is that our own dog-fooding (πΆπ°) doesn't reflect the sort of code our users always do.
- Investigating leveraging existing infrastructureto crawl external codebases and run language service operations on them.
- π€
- Compiler plugin API
- Minification is one of the most-demanded issues of all time.
- We can't provide it, but we want to enable more tooling to leverage TypeScript APIs
- Experimenting with a prototype for a new printer that can take care of basics, APIs to inject transforms into the tree from an invocation of tsc.
- Entirely investigative, and depends on partner teams being able to utilize it - no clue if this will land in a stable release.
- π
- High bug count
Productivity
- Refactor to named parameters
- High positive feedback on issue tracker
- β
- Smart select API
- Accrue value to VS Code and other consuming editors.
- β
- Convert to arrow function/vice versa
- Outstanding PR
- β
- Class components to function components?
- Seems pretty React-specific.
- β can't be prioritized for 3.4
j-oliveras, styfle, sledorze, timocov, artembatura and 43 morej-oliveras, styfle, dested, MattiasBuelens, timocov and 11 moretimocov, ulrichb, karol-majewski, giogonzo, bhongy and 9 moreiagomls, j-oliveras, styfle, timocov, Hotell and 6 more
Metadata
Metadata
Assignees
Labels
PlanningIteration plans and roadmappingIteration plans and roadmapping
Type
Projects
Milestone
Relationships
Development
Issue actions
You canβt perform that action at this time.