TypeScript was first released publicly in October 2012, and reached 1.0 in April 2014. A
new version number has come every few months since. The version is not recorded in a
source file. It is the version of the compiler that reads the file, and
typesVersions can adapt declaration files to it. In November 2026 the latest
release is 7.0.2, and 7.1 is in beta. Details are in the
release
notes and the
roadmap.
The current line
| Version | Released | Main language features |
|---|---|---|
| 7.0 | July 2026 | The compiler rewritten in Go, with parallel checking, and no programmatic API yet. Unicode-aware inference in template literal types. Deprecated options removed. JavaScript files analysed more like TypeScript files |
| 6.0 | March 2026 | The last release of the compiler written in TypeScript, a bridge to 7.0. New defaults: strict, module: esnext, types: []. es2025 target and lib; Temporal types. #/ subpath imports. Functions that do not use this are no longer contextually sensitive, which improves inference |
| 5.9 | August 2025 | import defer; --module node20 |
| 5.8 | February 2025 | erasableSyntaxOnly; require() of ES modules under nodenext; --module node18; each branch of a conditional return checked against the return type |
| 5.7 | November 2024 | Checks for variables never initialised; rewriteRelativeImportExtensions; es2024 target |
| 5.6 | September 2024 | Errors on always-truthy and nullish checks; iterator helper methods; strictBuiltinIteratorReturn; noUncheckedSideEffectImports; noCheck |
| 5.5 | June 2024 | Inferred type predicates; narrowing of constant indexed access; regular expression checks; isolatedDeclarations; ${configDir} |
| 5.4 | March 2024 | NoInfer; narrowing preserved in closures; --module preserve |
| 5.3 | November 2023 | Import attributes; resolution-mode in import types; switch (true) narrowing; narrowing through Symbol.hasInstance |
| 5.2 | August 2023 | using declarations; decorator metadata; labelled and unlabelled tuple elements together |
| 5.1 | June 2023 | Functions returning undefined need no return; unrelated types for getters and setters; JSX.ElementType; namespaced JSX attributes |
| 5.0 | March 2023 | Standard decorators; const type parameters; bundler resolution; verbatimModuleSyntax; export type *; all enums are union enums |
TypeScript 4
| Version | Released | Main language features |
|---|---|---|
| 4.9 | November 2022 | satisfies; accessor; in narrowing of unknown properties; comparison with NaN is an error |
| 4.8 | August 2022 | Better narrowing on generics and intersections; better infer in template strings; errors when comparing object and array literals |
| 4.7 | May 2022 | node16 and nodenext modes; instantiation expressions; extends on infer; variance annotations; moduleSuffixes; resolution-mode |
| 4.6 | February 2022 | Narrowing destructured discriminated unions; code before super(); es2022 target |
| 4.5 | November 2021 | Awaited; tail recursion in conditional types; type on import names; template string discriminants; #private in in checks; import assertions |
| 4.4 | August 2021 | Narrowing of aliased conditions; index signatures on symbols and template patterns; exactOptionalPropertyTypes; useUnknownInCatchVariables |
| 4.3 | May 2021 | Separate get and set types; override; template string improvements; #private methods; static index signatures |
| 4.2 | February 2021 | Leading and middle rest elements in tuples; abstract constructor types; noPropertyAccessFromIndexSignature |
| 4.1 | November 2020 | Template literal types; key remapping with as; recursive conditional types; noUncheckedIndexedAccess |
| 4.0 | August 2020 | Variadic tuples; labelled tuples; short-circuit assignment operators; unknown on catch |
TypeScript 3
| Version | Released | Main language features |
|---|---|---|
| 3.9 | May 2020 | // @ts-expect-error; improved inference in Promise.all |
| 3.8 | February 2020 | Type-only imports and exports; #private fields; export * as ns; top-level await |
| 3.7 | November 2019 | Optional chaining; nullish coalescing; assertion functions; recursive type aliases; // @ts-nocheck in .ts files |
| 3.6 | August 2019 | Typed iterators and generators |
| 3.5 | May 2019 | Omit; higher-order inference for constructors; default constraint unknown |
| 3.4 | March 2019 | Higher-order function inference; readonly arrays and tuples; as const; globalThis |
| 3.3 | January 2019 | Calling unions of functions more easily; file-incremental --build --watch |
| 3.2 | November 2018 | strictBindCallApply; BigInt; generic spread in object literals |
| 3.1 | September 2018 | Mapped tuples and arrays; properties on function declarations; typesVersions |
| 3.0 | July 2018 | unknown; tuples in rest parameters; project references; /// <reference lib /> |
TypeScript 2
| Version | Released | Main language features |
|---|---|---|
| 2.9 | May 2018 | keyof with number and symbol keys; import() types; generics on JSX and tagged templates; import.meta |
| 2.8 | March 2018 | Conditional types and infer; + and - modifiers in mapped types; per-file JSX pragmas |
| 2.7 | January 2018 | strictPropertyInitialization; definite assignment assertions; fixed-length tuples; in as a type guard; numeric separators |
| 2.6 | October 2017 | strictFunctionTypes; JSX fragments; // @ts-ignore |
| 2.5 | August 2017 | Optional catch binding |
| 2.4 | June 2017 | String enums; dynamic import(); weak type detection |
| 2.3 | April 2017 | Type parameter defaults; async iterators; --strict; checkJs; ThisType |
| 2.2 | February 2017 | Mixin classes; the object type; new.target |
| 2.1 | December 2016 | keyof; indexed access and mapped types; object spread and rest; async down to ES5 |
| 2.0 | September 2016 | strictNullChecks; control-flow analysis; discriminated unions; never; readonly; this parameters; @types packages |
TypeScript 1
| Version | Released | Main language features |
|---|---|---|
| 1.8 | January 2016 | String literal types; allowJs; this-based type guards; augmenting modules and globals |
| 1.7 | November 2015 | The polymorphic this type; the ** operator |
| 1.6 | September 2015 | Intersection types; JSX; abstract classes; user-defined type guards; class expressions; generic aliases |
| 1.5 | July 2015 | ES modules; destructuring; spread; for…of; symbols; decorators; tsconfig.json; the namespace keyword |
| 1.4 | January 2015 | Union types and type guards; let, const, template literals; type aliases; const enum |
| 1.3 | November 2014 | protected; tuple types |
| 1.0 | April 2014 | The first stable release: classes, interfaces, modules, generics and declaration files |
Dates are those of each version’s release on npm or its announcement.