* Disallow property/accessor overrides Unless the base property or accessor is abstract * Disallow uninitialised property overrides This causes quite a few test breaks. We'll probably want to revert many of them by switching to the upcoming `declare x: number` syntax. * Updates from design review + fix ancient bug 1. Don't error when overriding properties from interfaces. 2. Fix error when overriding methods with other things. This had no tests so I assume that the code was always dead and never worked. * Need to add a couple of errors and squash one Will update after checking out other branch for a minute * Everything works so far Need to test properties initialised in constructor * Check for constructor initialisation * change error wording * Improve error wording * Add codefix to add missing 'declare' * Always emit accessors in .d.ts files * Allow 'declare' on any uninitialised property decl * Undo code moves * Let sleeping dogs lie * Correctly set NodeFlags.Ambient And simplify redundant parts of check. * Remove more unneeded code * Update baselines * Update baselines * Update baselines * Ignore this-property assignments * Fix base-in-interface check * Do not error when base parent is interface * Fix base interface check * Add missed baselines * Fix check * Fix new errors in services * Fix new errors in services * Fix errors in testRunner * Add flag and turn off errors when on * Structure of new emit is correct, fake content It is 'hi'. * Basically right emit * Fix one last unitialised property declaration * Haha no I missed another one * Fix whitespace back to CRLF * Minor fix and code cleanup * New test case * Fix bug in isInitializedProperty * Updates from design meeting. 1. Change flag name to useDefineForClassFields (and flip polarity). 2. Forbid ES3 + useDefineForClassFields (since there is no defineProperty). 3. Forbid overriding an abstract property-with-initializer with an accessor. * Update baselines * Object.defineProperty for methods too Using code from Ron from his upcoming refactor of the factory functions. * Update slow baselines * Improve error message * Update src/compiler/transformers/utilities.ts Co-Authored-By: Andrew Branch <andrewbranch@users.noreply.github.com> * Add test of computed properties * Remove done TODO
TypeScript
TypeScript 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, and stay up to date via our blog and Twitter account.
Installing
For the latest stable version:
npm install -g typescript
For our nightly builds:
npm install -g typescript@next
Contribute
There are many ways to contribute to TypeScript.
- Submit bugs and help us verify fixes as they are checked in.
- Review the source code changes.
- Engage with other TypeScript users and developers on StackOverflow.
- Join the #typescript discussion on Twitter.
- Contribute bug fixes.
- Read the language specification (docx, pdf, md).
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
Documentation
Building
In order to build the TypeScript compiler, ensure that you have Git and Node.js installed.
Clone a copy of the repo:
git clone https://github.com/microsoft/TypeScript.git
Change to the TypeScript directory:
cd TypeScript
Install Gulp tools and dev dependencies:
npm install -g gulp
npm install
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.
# Some low-value tests are skipped when not on a CI machine - you can use the
# --skipPercent=0 command to override this behavior and run all tests locally.
# You can override the specific suite runner used or specify a test for this command.
# Use --tests=<testPath> for a specific test and/or --runner=<runnerName> 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=<number> 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
node built/local/tsc.js hello.ts
Roadmap
For details on our planned features and future direction please refer to our roadmap.