-
Notifications
You must be signed in to change notification settings - Fork 0
Contributing to TypeScript
There are three great ways to contribute to the TypeScript project: logging bugs, submitting pull requests, and creating suggestions.
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.
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.
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.
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 below -
Needs Proposal
: A full write-up is needed to explain how the feature should work -
Needs More Info
: A proposal exists, but there are follow-up questions that need to be addressed -
In 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 schedule -
Ready to Implement
: The proposal is accepted and has been designed enough that it can be implemented now -
Accepting PRs
: We are accepting pull requests that fully implement this feature -
Committed
: 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 itself -
Too 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 language -
Breaking Change
: Would meaningfully break compatibility with JavaScript or a previous version of TypeScript, or would prevent us from implementing known future ECMAScript proposals -
By 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.
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.
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
TypeScript Language Basics
- Basic Types
- Interfaces
- Classes
- Namespaces and Modules
- Functions
- Generics
- Compiler Options
- tsconfig.json
- Integrating with Build Tools
- Nightly Builds
TypeScript Language Advanced
- Mixins
- Declaration Merging
- Type Inference
- Type Compatibility
- JSX
- Writing Declaration Files
- Typings for NPM packages
News
TypeScript Contributors
- Contributing to TypeScript
- TypeScript Design Goals
- Coding Guidelines
- Spec conformance testing
- Useful Links for TypeScript Issue Management
- Writing Good Design Proposals
- Compiler Internals
Building Tools for TypeScript
- Architectural Overview
- Using the Compiler API
- Using the Language Service API
- Dev Mode in Visual Studio
- Debugging Language Service in VS Code
FAQs