DEV Community

Cover image for (1) TypeScript: Create Optional Types From Old Types?
Taric Ov
Taric Ov

Posted on

(1) TypeScript: Create Optional Types From Old Types?

Here's a quick tip on how to use already-existing types to create a new type with optional properties without changing the original type:

type ToptionalProps<T> = { [K in keyof T]?: T[K] }; // Example Interface: interface Tuser { id: number; name: string; email: string; } type ToptionalUser = ToptionalProps<Tuser>; // Equivalent to: type ToptionalUser = { id?: number; name?: string; email?: string }; // ==== And you can play around and Pick and Omit like so: ===== type TnameAndIdUser = Omit<Tuser, "email"> type TomittedOptionalProps<T> = { [K in keyof T]?: T[K] }; type ToptionalUser2 = TomittedOptionalProps<TnameAndIdUser>; const newUser: ToptionalUser2 = {email: "newuser@gmail.com"} // Error 'email' does not exist in type 'TpickedOptionalProps<x>'; 
Enter fullscreen mode Exit fullscreen mode

With this trick, you can now easily create a type where all properties of the original type become optional.

Ts Playground:

Top comments (0)