# TypeScript [![GitHub Actions CI](https://github.com/microsoft/TypeScript/workflows/CI/badge.svg)](https://github.com/microsoft/TypeScript/actions?query=workflow%3ACI) [![Devops Build Status](https://dev.azure.com/typescript/TypeScript/_apis/build/status/Typescript/node10)](https://dev.azure.com/typescript/TypeScript/_build?definitionId=7) [![npm version](https://badge.fury.io/js/typescript.svg)](https://www.npmjs.com/package/typescript) [![Downloads](https://img.shields.io/npm/dm/typescript.svg)](https://www.npmjs.com/package/typescript) [TypeScript](https://www.typescriptlang.org/) is a language for application-scale JavaScript. TypeScript adds optional types to JavaScript that support tools for large-scale JavaScript applications for any browser, for any host, on any OS. TypeScript compiles to readable, standards-based JavaScript. Try it out at the [playground](https://www.typescriptlang.org/play/), and stay up to date via [our blog](https://blogs.msdn.microsoft.com/typescript) and [Twitter account](https://twitter.com/typescript). Find others who are using TypeScript at [our community page](https://www.typescriptlang.org/community/). ## Installing For the latest stable version: ```bash npm install -g typescript ``` For our nightly builds: ```bash npm install -g typescript@next ``` ## Contribute There are many ways to [contribute](https://github.com/microsoft/TypeScript/blob/master/CONTRIBUTING.md) to TypeScript. * [Submit bugs](https://github.com/microsoft/TypeScript/issues) and help us verify fixes as they are checked in. * Review the [source code changes](https://github.com/microsoft/TypeScript/pulls). * Engage with other TypeScript users and developers on [StackOverflow](https://stackoverflow.com/questions/tagged/typescript). * Help each other in the [TypeScript Community Discord](https://discord.gg/typescript). * Join the [#typescript](https://twitter.com/search?q=%23TypeScript) discussion on Twitter. * [Contribute bug fixes](https://github.com/microsoft/TypeScript/blob/master/CONTRIBUTING.md). * Read the archived language specification ([docx](https://github.com/microsoft/TypeScript/blob/master/doc/TypeScript%20Language%20Specification%20-%20ARCHIVED.docx?raw=true), [pdf](https://github.com/microsoft/TypeScript/blob/master/doc/TypeScript%20Language%20Specification%20-%20ARCHIVED.pdf?raw=true), [md](https://github.com/microsoft/TypeScript/blob/master/doc/spec-ARCHIVED.md)). This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. ## Documentation * [TypeScript in 5 minutes](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html) * [Programming handbook](https://www.typescriptlang.org/docs/handbook/basic-types.html) * [Homepage](https://www.typescriptlang.org/) ## Building In order to build the TypeScript compiler, ensure that you have [Git](https://git-scm.com/downloads) and [Node.js](https://nodejs.org/) installed. Clone a copy of the repo: ```bash git clone https://github.com/microsoft/TypeScript.git ``` Change to the TypeScript directory: ```bash cd TypeScript ``` Install [Gulp](https://gulpjs.com/) tools and dev dependencies: ```bash npm install -g gulp npm ci ``` Use one of the following to build and test: ``` gulp local # Build the compiler into built/local. gulp clean # Delete the built compiler. gulp LKG # Replace the last known good with the built one. # Bootstrapping step to be executed when the built compiler reaches a stable state. gulp tests # Build the test infrastructure using the built compiler. gulp runtests # Run tests using the built compiler and test infrastructure. # You can override the specific suite runner used or specify a test for this command. # Use --tests= for a specific test and/or --runner= for a specific suite. # Valid runners include conformance, compiler, fourslash, project, user, and docker # The user and docker runners are extended test suite runners - the user runner # works on disk in the tests/cases/user directory, while the docker runner works in containers. # You'll need to have the docker executable in your system path for the docker runner to work. gulp runtests-parallel # Like runtests, but split across multiple threads. Uses a number of threads equal to the system # core count by default. Use --workers= to adjust this. gulp baseline-accept # This replaces the baseline test results with the results obtained from gulp runtests. gulp lint # Runs eslint on the TypeScript source. gulp help # List the above commands. ``` ## Usage ```bash node built/local/tsc.js hello.ts ``` ## Roadmap For details on our planned features and future direction please refer to our [roadmap](https://github.com/microsoft/TypeScript/wiki/Roadmap). ## Changes We made the following code modifications to support the ETS development paradigm. ### October 2021 * [x] Support custom component `struct` syntax, and add `StructDeclaration` and `EtsComponentExpression` node type. ### November 2021 * [x] Support `gotoDefinition` for custom component name and arguments. * [x] Support completion of lifecycle for `StructDeclaration` type. * [x] Support `@Builder` decorator for function and method. ### January 2022 * [x] Optimize eTS language support. * [x] Support `@BuilderParam` decorator and custom container lambda syntax. * [x] Add jsDoc and displayParts info in `getCompletionAtPosition` interface. * [x] Support eTS language ScriptKind and Extension. * [x] Add `PropertyAccessExpressionConditionCheck` for eTS. ### February 2022 * [x] Support `@Styles` decorator and related syntax. * [x] Add check for `struct` name contain reserved tag name. * [x] Support `stateStyles` property. * [x] Performance optimization for eTS completion. * [x] Support `@Extend` and `@Styles` decorators for function.