DEV Community

Cover image for Write Like a Pro: 10 TypeScript Utilities You’re Probably Not Using Yet(Type Utilities!)(12)
Karandeep Singh for Wisdom Bits

Posted on

Write Like a Pro: 10 TypeScript Utilities You’re Probably Not Using Yet(Type Utilities!)(12)

Today! We’re going to continue TypeScript learning like you’re a smart 5-year-old who loves to build things and asks “why?” (which is the best thing ever).

& yes “why?” is my way of learning.

I've divided this into 20 Chapters. and will go one by one and each will be of 2 - 3 min. of read.
This is a Continuation. if you have not read the Previous chapter -
Chapter 11

🧩 Chapter 12: Utility Types – TypeScript’s Built-In Tools

(aka: “Why rewrite what TypeScript already provides?”)

What are Utility Types?

TypeScript comes with pre-built helper types to transform, filter, or enhance types easily without writing repetitive manual types.

These utilities help you:

✅ Save time
✅ Avoid boilerplate
✅ Keep your types clean & DRY
✅ Write advanced typings easily

Typescript Utilities:

Utility Type Purpose
Partial<T> Make all props optional
Required<T> Make all props required
Readonly<T> Make all props readonly
Pick<T, K> Pick specific props
Omit<T, K> Remove specific props
Record<K, T> Object with specified keys and type
Exclude<T, U> Remove members from union
Extract<T, U> Extract members from union
ReturnType<T> Get function return type
Parameters<T> Get function parameters as tuple

🚀 Partial<Type>

Makes all properties optional.

type User = { id: number; name: string; email: string; }; type UpdateUser = Partial<User>; 
Enter fullscreen mode Exit fullscreen mode

🚀 Required<Type>

Makes all properties required (even if optional originally).

type Settings = { darkMode?: boolean; fontSize?: number; }; type StrictSettings = Required<Settings>; const s: StrictSettings = { darkMode: true, fontSize: 16, }; // ✅ Now must provide all properties 
Enter fullscreen mode Exit fullscreen mode

🚀 Readonly<Type>

Makes all properties readonly.

type Config = { apiUrl: string; }; const config: Readonly<Config> = { apiUrl: "https://api.com" }; config.apiUrl = "https://newapi.com"; // ❌ Error: cannot assign to readonly property 
Enter fullscreen mode Exit fullscreen mode

🚀 Pick<Type, Keys>

Pick specific properties from a type to create a new type.

type User = { id: number; name: string; email: string; }; type UserPreview = Pick<User, "id" | "name">; const preview: UserPreview = { id: 1, name: "Karan", }; 
Enter fullscreen mode Exit fullscreen mode

🚀 Omit<Type, Keys>

Exclude specific properties from a type to create a new type.

type UserWithoutEmail = Omit<User, "email">; const u: UserWithoutEmail = { id: 2, name: "Chatu", }; 
Enter fullscreen mode Exit fullscreen mode

🚀 Record<Keys, Type>

Creates an object type with specific keys and a specific value type.

type Roles = "admin" | "editor" | "viewer"; type Permissions = Record<Roles, boolean>; const perms: Permissions = { admin: true, editor: true, viewer: false, }; 
Enter fullscreen mode Exit fullscreen mode

🚀 Exclude<UnionType, ExcludedMembers>

Removes specific members from a union.

type Status = "loading" | "success" | "error"; type NonErrorStatus = Exclude<Status, "error">; // Result: "loading" | "success" 
Enter fullscreen mode Exit fullscreen mode

🚀 Extract<UnionType, Members>

Extracts only specified members from a union.

type Status = "loading" | "success" | "error"; type LoadingStatus = Extract<Status, "loading">; // Result: "loading" 
Enter fullscreen mode Exit fullscreen mode

🚀 ReturnType<Type>

Gets the return type of a function.

function getUser() { return { id: 1, name: "Chatu" }; } type UserType = ReturnType<typeof getUser>; // { id: number; name: string } 
Enter fullscreen mode Exit fullscreen mode

🚀 Parameters<Type>

Gets the types of parameters of a function as a tuple.

function user(name: string, age: number) {} type Params = Parameters<typeof user>; // [string, number] 
Enter fullscreen mode Exit fullscreen mode

Read Previous Chapters

If you enjoyed this and want to master TypeScript and other technologies, follow the series and drop a like!🤝

I’m a passionate software developer sharing the cool things I discover, hoping they help you level up on your coding journey.

How i created my own State Management Library : Rethinking State Management in React — From a Dev, for Developers.

Top comments (0)