• TypeScript 4.9
  • Better Types for Promise.resolve
  • JavaScript Emit No Longer Elides Imports
  • exports is Prioritized Over typesVersions
  • TypeScript 4.8
  • Unconstrained Type Parameters No Longer Assignable to {} in strictNullChecks
  • TypeScript 4.7
  • Stricter Spread Checks in JSX
  • Stricter Checks with Template String Expressions
  • readFile Method is No Longer Optional on LanguageServiceHost
  • readonly Tuples Have a readonlylength Property
  • TypeScript 4.6
  • Object Rests Drop Unspreadable Members from Generic Objects
  • JavaScript Files Always Receive Grammar and Binding Errors
  • TypeScript 4.5
  • lib.d.ts Changes for TypeScript 4.5
  • Inference Changes from Awaited
  • Template Strings Use .concat()
  • Compiler Options Checking at the Root of tsconfig.json
  • Restrictions on Assignability to Conditional Types
  • TypeScript 4.4
  • lib.d.ts Changes for TypeScript 4.4
  • More-Compliant Indirect Calls for Imported Functions
  • Using unknown in Catch Variables
  • Broader Always-Truthy Promise Checks
  • Abstract Properties Do Not Allow Initializers
  • TypeScript 4.3
  • Union Enums Cannot Be Compared to Arbitrary Numbers
  • TypeScript 4.2
  • noImplicitAny Errors Apply to Loose yield Expressions
  • Type Arguments in JavaScript Are Not Parsed as Type Arguments
  • The in Operator No Longer Allows Primitive Types on the Right Side
  • TypeScript 4.1
  • abstract Members Can't Be Marked async
  • resolve's Parameters Are No Longer Optional in Promises
  • any and unknown are considered possibly falsy in && expressions
  • Conditional Spreads Create Optional Properties
  • Unmatched parameters are no longer related
  • TypeScript 4.0
  • Properties Overridding Accessors (and vice versa) is an Error
  • Operands for delete must be optional.
  • TypeScript 3.9
  • Parsing Differences in Optional Chaining and Non-Null Assertions
  • } and > are Now Invalid JSX Text Characters
  • Stricter Checks on Intersections and Optional Properties
  • Intersections Reduced By Discriminant Properties
  • Getters/Setters are No Longer Enumerable
  • Type Parameters That Extend any No Longer Act as any
  • export * is Always Retained
  • Exports Now Use Getters for Live Bindings
  • Exports are Hoisted and Initially Assigned
  • TypeScript 3.8
  • Stricter Assignability Checks to Unions with Index Signatures
  • Optional Arguments with no Inferences are Correctly Marked as Implicitly any
  • object in JSDoc is No Longer any Under noImplicitAny
  • TypeScript 3.6
  • Class Members Named "constructor" Are Now Constructors
  • DOM Updates
  • JSDoc Comments No Longer Merge
  • Keywords Cannot Contain Escape Sequences
  • TypeScript 3.5
  • Generic type parameters are implicitly constrained to unknown
  • { [k: string]: unknown } is no longer a wildcard assignment target
  • Improved excess property checks in union types
  • Background
  • Rationale and Change
  • Workarounds
  • Fixes to Unsound Writes to Indexed Access Types
  • Background
  • Change and Rationale
  • Workarounds
  • lib.d.ts includes the Omit helper type
  • Object.keys rejects primitives in ES5
  • Background
  • Rationale and Change
  • Workarounds
  • TypeScript 3.4
  • Top-level this is now typed
  • Propagated generic type arguments
  • Contextual return types flow in as contextual argument types
  • Consistent inference priorities outside of strictFunctionTypes
  • TypeScript 3.2
  • lib.d.ts updates
  • wheelDelta and friends have been removed.
  • More specific types
  • TypeScript 3.1
  • Some vendor-specific types are removed from lib.d.ts
  • Recommendations:
  • Narrowing functions now intersects {}, Object, and unconstrained generic type parameters.
  • TypeScript 3.0
  • The unknown keyword is reserved
  • Intersecting with null/undefined reduces to null/undefined outside of strictNullChecks
  • Recommendation
  • TypeScript 2.9
  • keyof now includes string, number and symbol keys
  • Recommendations:
  • Trailing commas not allowed on rest parameters
  • In strictNullChecks, an unconstrained type parameter is no longer assignable to object
  • TypeScript 2.8
  • Unused type parameters are checked under --noUnusedParameters
  • Some MS-specific types are removed from lib.d.ts
  • HTMLObjectElement no longer has an alt attribute
  • TypeScript 2.7
  • Tuples now have a fixed length property
  • Under allowSyntheticDefaultImports, types for default imports are synthesized less often for TS and JS files
  • Stricter checking for indexed access generic type constraints
  • in expressions are treated as type guards
  • Structurally-equivalent classes are not reduced in conditional operator
  • CustomEvent is now a generic type
  • TypeScript 2.6
  • Write-only references are unused
  • Arbitrary expressions are forbidden in export assignments in ambient contexts
  • TypeScript 2.4
  • Weak Type Detection
  • Return types as inference targets
  • Stricter variance in callback parameters
  • Promises
  • (Nested) Callbacks
  • Stricter checking for generic functions
  • Type parameter inference from contextual types
  • TypeScript 2.3
  • Empty generic parameter lists are flagged as error
  • TypeScript 2.2
  • Changes to DOM API's in the standard library
  • TypeScript 2.1
  • Generated constructor code substitutes the return value of super(...) calls as this
  • Extending built-ins like Error, Array, and Map may no longer work
  • Literal types are inferred by default for const variables and readonly properties
  • No type narrowing for captured variables in functions and class expressions
  • Implicit-any error raised for un-annotated callback arguments with no matching overload arguments
  • Comma operators on side-effect-free expressions is now flagged as an error
  • Changes to DOM API's in the standard library
  • TypeScript 2.0
  • No type narrowing for captured variables in functions and class expressions
  • Generic type parameters are now narrowed
  • Getters with no setters are automatically inferred to be readonly properties
  • Function declarations not allowed in blocks in strict mode
  • TemplateStringsArray is now immutable
  • TypeScript 1.8
  • Modules are now emitted with a "use strict"; prologue
  • Exporting non-local names from a module
  • Reachability checks are enabled by default
  • --module is not allowed alongside --outFile unless --module is specified as one of amd or system.
  • Changes to DOM API's in the standard library
  • Disallow this accessing before super-call
  • TypeScript 1.7
  • Changes in inferring the type from this
  • Automatic semicolon insertion after class member modifiers
  • TypeScript 1.6
  • Strict object literal assignment checking
  • CommonJS module resolution no longer assumes paths are relative
  • Function and class default export declarations can no longer merge with entities intersecting in their meaning
  • Module bodies are parsed in strict mode
  • Changes to DOM API's in the standard library
  • System module output uses bulk exports
  • .js content of npm package is moved from 'bin' to 'lib' folder
  • TypeScript npm package does not install globally by default
  • Decorators are checked as call expressions
  • TypeScript 1.5
  • Referencing arguments in arrow functions is not allowed
  • Enum reference in-lining changes
  • Contextual type flows through super and parenthesized expressions
  • DOM interface changes
  • Class bodies are parsed in strict mode
  • TypeScript 1.4
  • Multiple Best Common Type Candidates
  • Generic Type Inference
  • Generic Rest Parameters
  • Overload Resolution with Type Argument Inference
  • Strict Mode Parsing for Class Declarations and Class Expressions
  • TypeScript 1.1
  • Working with null and undefined in ways that are observably incorrect is now an error