There are three great ways to contribute to the TypeScript project: logging bugs, submitting pull requests, and creating suggestions.
Logging Bugs
To log a bug, just use the GitHub issue tracker. Confirmed bugs will be labelled with the Bug
label. Please include code to reproduce the issue and a description of what you expected to happen.
Pull Requests
Before we can accept a pull request from you, you'll need to sign the Contributor License Agreement (CLA). See the "Legal" section of the CONTRIBUTING.md guide. That document also outlines the technical nuts and bolts of submitting a pull request. Be sure to follow our Coding Guidelines.
You can learn more about the compiler's codebase at https://github.com/microsoft/TypeScript-Compiler-Notes/
Suggestions
We're also interested in your feedback in future of TypeScript. You can submit a suggestion or feature request through the issue tracker. To make this process more effective, we're asking that these include more information to help define them more clearly. Start by reading the TypeScript Design Goals and refer to Writing Good Design Proposals for information on how to write great feature proposals.
Issue Tracking 101
Unlabelled issues haven't been looked at by a TypeScript coordinator. You can expect to see them labelled within a few days of being logged.
Issues with the Bug
label are considered to be defects. Once they have the Bug
label, they'll either be assigned to a TypeScript developer and assigned a milestone, or put in the Community milestone, indicating that we're accepting pull requests for this bug. Community bugs are a great place to start if you're interested in making a code contribution to TypeScript.
We'll be using Labels to track the status of suggestions or feature requests. You can expect to see the following:
Suggestion
: We consider this issue to not be a bug per se, but rather a design change or feature of some sort. Any issue with this label should have at least one more label from the list belowNeeds Proposal
: A full write-up is needed to explain how the feature should workNeeds More Info
: A proposal exists, but there are follow-up questions that need to be addressedIn Discussion
: This is being discussed by the TypeScript design team. You can expect this phase to take at least a few weeks, depending on our scheduleReady to Implement
: The proposal is accepted and has been designed enough that it can be implemented nowhelp wanted
: We are accepting pull requests that fully implement this featureCommitted
: We have allocated time on the team schedule to implement this feature
Declined suggestions will have the Declined
label along with one of the following:
Out of Scope
: Is outside the scope of the TypeScript compiler; would be better implemented as a separate tool or extension rather than a change to TypeScript itselfToo Complex
: The amount of complexity that this (and its future implications) would introduce is not justified by the amount of value it adds to the languageBreaking Change
: Would meaningfully break compatibility with JavaScript or a previous version of TypeScript, or would prevent us from implementing known future ECMAScript proposalsBy Design
: This aspect of the language is an intentional design decision
Issues that are not bugs or suggestions will be labelled appropriately (Question
, By Design
, External
) and closed. Please use Stack Overflow for TypeScript questions.
Discussion
In order to keep the conversation clear and transparent, limit discussion to English and keep things on topic with the issue. Be considerate to others and try to be courteous and professional at all times.
Documentation
For any new features, please:
- Add a link to the Roadmap: https://github.com/Microsoft/TypeScript/wiki/Roadmap
- Add a blurb to what's new page: https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in-TypeScript
- Add a section to the Handbook, if big enough: https://github.com/Microsoft/TypeScript-Handbook
- For breaking changes:
- Add a breaking change notice: https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes
- or to the API breaking changes pages: https://github.com/Microsoft/TypeScript/wiki/API-Breaking-Changes
User documentation
News
Debugging TypeScript
- Performance
- Performance-Tracing
- Debugging-Language-Service-in-VS-Code
- Getting-logs-from-TS-Server-in-VS-Code
- JavaScript-Language-Service-in-Visual-Studio
- Providing-Visual-Studio-Repro-Steps
Contributing to TypeScript
- Contributing to TypeScript
- TypeScript Design Goals
- Coding Guidelines
- Useful Links for TypeScript Issue Management
- Writing Good Design Proposals
- Compiler Repo Notes
- Deployment
Building Tools for TypeScript
- Architectural Overview
- Using the Compiler API
- Using the Language Service API
- Standalone Server (tsserver)
- TypeScript MSBuild In Depth
- Debugging Language Service in VS Code
- Writing a Language Service Plugin
- Docker Quickstart
FAQs
The Main Repo