• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2# TypeScript
3
4[![GitHub Actions CI](https://github.com/microsoft/TypeScript/workflows/CI/badge.svg)](https://github.com/microsoft/TypeScript/actions?query=workflow%3ACI)
5[![Devops Build Status](https://dev.azure.com/typescript/TypeScript/_apis/build/status/Typescript/node10)](https://dev.azure.com/typescript/TypeScript/_build?definitionId=7)
6[![npm version](https://badge.fury.io/js/typescript.svg)](https://www.npmjs.com/package/typescript)
7[![Downloads](https://img.shields.io/npm/dm/typescript.svg)](https://www.npmjs.com/package/typescript)
8
9[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).
10
11Find others who are using TypeScript at [our community page](https://www.typescriptlang.org/community/).
12
13## Installing
14
15For the latest stable version:
16
17```bash
18npm install -g typescript
19```
20
21For our nightly builds:
22
23```bash
24npm install -g typescript@next
25```
26
27## Contribute
28
29There are many ways to [contribute](https://github.com/microsoft/TypeScript/blob/master/CONTRIBUTING.md) to TypeScript.
30* [Submit bugs](https://github.com/microsoft/TypeScript/issues) and help us verify fixes as they are checked in.
31* Review the [source code changes](https://github.com/microsoft/TypeScript/pulls).
32* Engage with other TypeScript users and developers on [StackOverflow](https://stackoverflow.com/questions/tagged/typescript).
33* Help each other in the [TypeScript Community Discord](https://discord.gg/typescript).
34* Join the [#typescript](https://twitter.com/search?q=%23TypeScript) discussion on Twitter.
35* [Contribute bug fixes](https://github.com/microsoft/TypeScript/blob/master/CONTRIBUTING.md).
36* Read the archived language specification ([docx](https://github.com/microsoft/TypeScript/blob/master/doc/TypeScript%20Language%20Specification%20-%20ARCHIVED.docx?raw=true),
37 [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)).
38
39This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see
40the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com)
41with any additional questions or comments.
42
43## Documentation
44
45*  [TypeScript in 5 minutes](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html)
46*  [Programming handbook](https://www.typescriptlang.org/docs/handbook/basic-types.html)
47*  [Homepage](https://www.typescriptlang.org/)
48
49## Building
50
51In order to build the TypeScript compiler, ensure that you have [Git](https://git-scm.com/downloads) and [Node.js](https://nodejs.org/) installed.
52
53Clone a copy of the repo:
54
55```bash
56git clone https://github.com/microsoft/TypeScript.git
57```
58
59Change to the TypeScript directory:
60
61```bash
62cd TypeScript
63```
64
65Install [Gulp](https://gulpjs.com/) tools and dev dependencies:
66
67```bash
68npm install -g gulp
69npm ci
70```
71
72Use one of the following to build and test:
73
74```
75gulp local             # Build the compiler into built/local.
76gulp clean             # Delete the built compiler.
77gulp LKG               # Replace the last known good with the built one.
78                       # Bootstrapping step to be executed when the built compiler reaches a stable state.
79gulp tests             # Build the test infrastructure using the built compiler.
80gulp runtests          # Run tests using the built compiler and test infrastructure.
81                       # You can override the specific suite runner used or specify a test for this command.
82                       # Use --tests=<testPath> for a specific test and/or --runner=<runnerName> for a specific suite.
83                       # Valid runners include conformance, compiler, fourslash, project, user, and docker
84                       # The user and docker runners are extended test suite runners - the user runner
85                       # works on disk in the tests/cases/user directory, while the docker runner works in containers.
86                       # You'll need to have the docker executable in your system path for the docker runner to work.
87gulp runtests-parallel # Like runtests, but split across multiple threads. Uses a number of threads equal to the system
88                       # core count by default. Use --workers=<number> to adjust this.
89gulp baseline-accept   # This replaces the baseline test results with the results obtained from gulp runtests.
90gulp lint              # Runs eslint on the TypeScript source.
91gulp help              # List the above commands.
92```
93
94
95## Usage
96
97```bash
98node built/local/tsc.js hello.ts
99```
100
101
102## Roadmap
103
104For details on our planned features and future direction please refer to our [roadmap](https://github.com/microsoft/TypeScript/wiki/Roadmap).
105
106## Changes
107
108We made the following code modifications to support the ETS development paradigm.
109
110### October 2021
111
112* [x] Support custom component `struct` syntax, and add `StructDeclaration` and `EtsComponentExpression` node type.
113
114### November 2021
115
116* [x] Support `gotoDefinition` for custom component name and arguments.
117* [x] Support completion of lifecycle for `StructDeclaration` type.
118* [x] Support `@Builder` decorator for function and method.
119
120### January 2022
121
122* [x] Optimize eTS language support.
123* [x] Support `@BuilderParam` decorator and custom container lambda syntax.
124* [x] Add jsDoc and displayParts info in `getCompletionAtPosition` interface.
125* [x] Support eTS language ScriptKind and Extension.
126* [x] Add `PropertyAccessExpressionConditionCheck` for eTS.
127
128### February 2022
129
130* [x] Support `@Styles` decorator and related syntax.
131* [x] Add check for `struct` name contain reserved tag name.
132* [x] Support `stateStyles` property.
133* [x] Performance optimization for eTS completion.
134* [x] Support `@Extend` and `@Styles` decorators for function.