Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • TypeScript Tutorial
  • TS Exercise
  • TS Interview Questions
  • TS Cheat Sheet
  • TS Array
  • TS String
  • TS Object
  • TS Operators
  • TS Projects
  • TS Union Types
  • TS Function
  • TS Class
  • TS Generic
Open In App
Next Article:
What are Hybrid Types in TypeScript?
Next article icon

TypeScript 5.0 Updates: What's New

Last Updated : 24 Mar, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

TypeScript is a programming language that adds type safety to JavaScript, making it easier to find errors early and improving code quality. Maintained by Microsoft, TypeScript 5.0 introduces new features and improvements that enhance performance and simplify development.

These updates provide developers with better flexibility, efficiency, and new tools to improve their projects. Let's explore the key changes in TypeScript 5.0 and how they can be used to streamline your development process.

1. Decorators

TypeScript 5.0 introduces decorators, a feature that allows you to add custom behavior to classes, methods, and properties without modifying the actual implementation. Before this, decorators were limited or required manual setups. This new feature makes it easier to handle things like logging, validation, and method wrapping in a declarative way.


JavaScript
class Pokemon {   name: string;    constructor(name: string) {     this.name = name;   }    pokedex() {     console.log(`This Pokemon is called ${this.name}!`);   } }  const pikachu = new Pokemon("Pikachu"); pikachu.pokedex();  // Output: This Pokemon is called Pikachu! 
  • What’s changed: Decorators enable the ability to easily add features such as logging or validation to methods or classes.
  • Problem solved: Reduces boilerplate code by providing a clean way to extend functionality without changing the underlying method code.

2. Const Type Parameters

TypeScript 5.0 introduced const type parameters, which enhance the way TypeScript infers types, making it more specific. This is especially helpful when working with object literals, arrays, or tuples. Prior to this feature, TypeScript inferred general types, which sometimes led to unintended mutations of values that should be treated as immutable.

Problem with Default Type Inference: By default, TypeScript infers general types for values passed to functions, even when the values are fixed or immutable. This flexibility can sometimes lead to mistakes when we want to ensure exact types.

JavaScript
type HasNames = { readonly names: string[] };  function getNamesExactly<T extends HasNames>(arg: T): T["names"] {   return arg.names; }  const names = getNamesExactly({ names: ["Alice", "Bob", "Eve"] }); 
  • What was the issue: Even though we passed a fixed array (["Alice", "Bob", "Eve"]), TypeScript inferred the type as string[] (a mutable array of strings) rather than preserving its exact form.
  • Why exact types are needed: Ensuring immutability is crucial in many cases, such as API development, configuration values, or preventing accidental data changes. For instance, we want to keep an array readonly ["Alice", "Bob", "Eve"] exactly as it is, without any mutation.

Solution const Type Parameters: With TypeScript 5.0, you no longer need to use as const to preserve the exact type of an object or array. Instead, you can now specify const in type parameters to automatically infer immutable types.

JavaScript
type HasNames = { names: readonly string[] };  function getNamesExactly<const T extends HasNames>(arg: T): T["names"] {   return arg.names; }  const names = getNamesExactly({ names: ["Alice", "Bob", "Eve"] }); 
  • What changed: You no longer need to manually use as const. TypeScript now infers the exact type (e.g., readonly ["Alice", "Bob", "Eve"]) automatically when const is added in the type parameter.
  • Problem solved: This simplifies the code and removes the potential for error by automatically preserving exact types for literals like arrays and objects. It makes the code easier to maintain and more robust.

3. Supporting Multiple Configuration Files in extends

In TypeScript, managing shared configuration settings across multiple projects used to require a lot of manual work. TypeScript 5.0 improves this by making it easier to extend multiple configuration files. You can now merge multiple configuration files, simplifying management and improving flexibility in larger projects.

Problem: Managing Multiple Configuration Files: Previously, developers had to manage shared settings across various configuration files manually. The extends feature allowed extending one configuration, but it didn't allow for extending multiple files easily.

JavaScript
// common.json {   "compilerOptions": {     "strict": true,     "noImplicitAny": true,     "noImplicitReturns": true   },   "formatOptions": {     "tabSize": 2,     "singleQuote": true   } }  // frontend.json {   "extends": ["./common.json"],   "compilerOptions": {     "target": "es2020"   } } 
  • What was the issue: Developers could only extend one configuration file at a time, leading to limitations when managing multiple configurations across various projects.
  • Why it's needed: Managing shared configurations across multiple files is common in large projects with multiple sub-projects or environments. This feature simplifies that process.

Solution: TypeScript 5.0 Simplifies Multiple Configuration Files: TypeScript 5.0 enables you to extend multiple configuration files, combining and overriding settings as needed. This provides much-needed flexibility when working with various configurations.

JavaScript
// common.json {   "compilerOptions": {     "strict": true,     "noImplicitAny": true   },   "formatOptions": {     "tabSize": 2,     "singleQuote": true   } }  // tsconfig1.json {   "compilerOptions": {     "strictNullChecks": true   } }  // frontend.json {   "extends": ["./common.json", "./tsconfig1.json"],   "files": ["./index.ts"] } 
  • What changed: You can now extend multiple files and specify custom settings that override previous configurations. The last file in the extends array takes precedence.
  • Problem solved: Developers no longer have to manually merge configuration settings from different files, improving project scalability and ease of maintenance.

4. All Enums Are Union Enums

In TypeScript, enums were previously treated as sets of constants, where each member was its own type. TypeScript 5.0 improves this by treating all enums as union enums. This means that even if some members of an enum are computed dynamically, TypeScript will still handle them as unions of member types.

Problem with Enum Literal Types: In earlier versions of TypeScript, enums were treated as distinct types for each member, which could cause issues when trying to use computed values within an enum.

JavaScript
enum Fruit {   Apple = 1,   Banana = 2,   Orange = 3 } 
  • What was the issue: The enum Fruit was treated as a union of 1 | 2 | 3, which caused problems when trying to introduce dynamic or computed enum members (like randomFruit).
  • Why it's needed: When working with enums that combine static and computed values, the previous approach didn’t ensure type safety, leading to potential runtime issues.

Solution: All Enums Are Now Unions of Member Types: TypeScript 5.0 ensures that enums are always treated as unions of their member types, even when members are computed at runtime.

JavaScript
enum Fruit {   Apple = 1,   Banana = 2,   Orange = 3,   randomFruit = Math.floor(Math.random() * 3) + 1 } 
  • What changed: Enums like randomFruit, which rely on runtime computations, are now treated as valid enum members, preserving type safety.
  • Problem solved: This change allows better handling of dynamically generated enum values, ensuring they are properly typed and improving type safety.

5. Bundler Module Resolution

TypeScript 5.0 introduces a new bundler module resolution option that improves compatibility with modern bundlers like Webpack and Parcel. Prior to this, module resolution in TypeScript was stricter and didn’t align well with how bundlers handle ECMAScript modules (ESM).

Problem with node16 and nodenext: In Node.js, ECMAScript modules require explicit file extensions, but bundlers like Webpack don’t enforce this rule, causing issues with TypeScript's resolution modes like node16 and nodenext.

JavaScript
{   "compilerOptions": {     "moduleResolution": "bundler",     "target": "esnext"   } } 
  • What was the issue: Using node16 or nodenext required including file extensions, which conflicted with the more flexible module handling used by bundlers.
  • Why it's needed: This flexibility is necessary for smooth integration with bundlers and modern JavaScript workflows.

Solution: bundler Resolution: The new bundler resolution option in TypeScript 5.0 aligns with how bundlers handle module resolution, allowing greater flexibility.

JavaScript
{   "compilerOptions": {     "moduleResolution": "bundler"   } } 
  • What changed: This resolution mode makes file lookup rules more flexible, matching the way bundlers like Webpack work.
  • Problem solved: It solves compatibility issues between TypeScript’s module resolution and bundlers, making it easier to work with modern build tools

6. --verbatimModuleSyntax Flag

TypeScript 5.0 introduces the --verbatimModuleSyntax flag, ensuring more predictable handling of imports and exports, especially when using type modifiers.

Problem: Import Elision: TypeScript may remove imports that are only used for types during compilation, potentially causing issues when the types are needed but not used directly in code.

JavaScript
import { Car } from "./car"; export function drive(car: Car) { /* ... */ } 
  • What was the issue: The Car import could be removed because it’s only used as a type, which might lead to runtime errors if the type is missing.
  • Why it's needed: Ensures that type-only imports are handled correctly, preventing unnecessary removal that could lead to issues.

Solution: --verbatimModuleSyntax: This flag ensures that imports/exports without type modifiers are not dropped, while type-only imports are still removed, making behavior more predictable.

JavaScript
{   "compilerOptions": {     "verbatimModuleSyntax": true   } } 
  • What changed: Ensures that imports and exports behave consistently when using the type modifier.
  • Problem solved: Makes the behavior of imports and exports predictable and consistent across different compilers and build systems.

Conclusion

TypeScript 5.0 brings several powerful enhancements that improve flexibility, efficiency, and compatibility, especially when dealing with modern build tools and large codebases. These updates allow developers to write cleaner, more maintainable code, and ensure better compatibility with various tooling and workflows.


Next Article
What are Hybrid Types in TypeScript?

T

tanmxcwi
Improve
Article Tags :
  • TypeScript

Similar Reads

  • What’s new in TypeScript 5.4 ?
    TypeScript 5.4 brings forth several new capabilities and refinements, aiming to enhance developer productivity and code quality. Some of the new capabilities that are added or Introduced in TypeScript 5.4 are as follows: Table of Content Variadic Tuple TypesClass Property Inference from Constructors
    2 min read
  • What are TypeScript Interfaces?
    TypeScript interfaces define the structure of objects by specifying property types and method signatures, ensuring consistent shapes and enhancing code clarity. Allow for optional and read-only properties for flexibility and immutability.Enable interface inheritance to create reusable and extendable
    4 min read
  • What are Hybrid Types in TypeScript?
    Hybrid types are used by TypeScript to refer to types that combine different things such as objects, functions, arrays etc. In this article, we will learn more about Hybrid Types in TypeScript. What are Hybrid Types in TypeScript?In TypeScript, using interfaces or type aliases we can define hybrid t
    2 min read
  • What is Type Erasure in TypeScript?
    TypeScript is a very mighty superset of JavaScript, which adds static typing to the language and allows developers to catch errors early on as well as write more maintainable code. This being said a TypeScript type system erases type information at compile time (or during the compilation), a phenome
    4 min read
  • How to Use NextJS in Typescript?
    TypeScript enhances Next.js applications by adding static type checking and improves developer experience through type safety. Integrating TypeScript into your Next.js project helps catch errors early and improves code maintainability. It offers even greater productivity and robustness to your web d
    5 min read
  • What is TypeScript Definition Manager ?
    What is TypeScript Definition Manager? TypeScript Definition Manager (TSDM) is a type definition manager for TypeScript, the popular JavaScript superset. It is a command line tool (CLI) that helps developers create, maintain, and manage type definitions for TypeScript projects. It is an open-source,
    4 min read
  • What is Type Annotations in TypeScript ?
    TypeScript Type Annotations allow developers to explicitly define the types of variables, functions, and other elements in the program. They help catch mistakes early by ensuring the right data type is used.They make the code easier to understand and follow.Type Annotations help avoid errors and mak
    3 min read
  • What is Recursive Generic in TypeScript ?
    In TypeScript, a recursive generic is a type that refers to itself within its definition, enabling the creation of data structures or types containing references to the same type within their structure. This capability proves invaluable when dealing with nested or hierarchical data structures like t
    4 min read
  • TypeScript null and undefined Type
    TypeScript, a popular programming language, is widely used for building scalable and robust applications. In this article, we’ll explore the null and undefined types, which represent the absence of a value or uninitialized variables. Null TypeWhat is Null?null represents the intentional absence of a
    2 min read
  • What are template literal types in Typescript ?
    Template literal types in TypeScript allow the construction of new string literal types by combining existing string literal types using template literal syntax. They enable the creation of complex string patterns by embedding unions and other literal types within template literals.This feature enha
    3 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences