All Articles

TypeScript 5.0 has landed!

Matt Pocock
Matt PocockMatt is a well-regarded TypeScript expert known for his ability to demystify complex TypeScript concepts.

TypeScript 5.0 has made it to Total TypeScript!

It brought a lot of improvements - you can learn all about it in our 5.0 breakdown.

The most exciting feature for Total TypeScript was const type parameters.

It lets you specify a type parameter as const - meaning that everything that gets passed to that parameter gets inferred as if it were as const.

const routes = <const TRoutes>( routes: TRoutes ) => { return routes; }; const myRoutes = routes({ user: "/user", createUser: "/user/create", }); Object.values(myRoutes); // ['/user', '/user/create'] // Before 5.0, myRoutes would be inferred as string[] 

Before 5.0, you needed to use a hack in TypeScript to get this behaviour - the F.Narrow type helper from ts-toolbelt. I even taught this in Total TypeScript!

No longer - I've re-recorded 3 exercises in TT's Advanced Patterns workshop to take advantage of const type annotations.

I can't wait to see what you build with them!

Matt's signature

Share this article with your friends

`any` Considered Harmful, Except For These Cases

Discover when it's appropriate to use TypeScript's any type despite its risks. Learn about legitimate cases where any is necessary.

Matt Pocock
Matt Pocock

No, TypeScript Types Don't Exist At Runtime

Learn why TypeScript's types don't exist at runtime. Discover how TypeScript compiles down to JavaScript and how it differs from other strongly-typed languages.

Matt Pocock
Matt Pocock