Skip to content

Latest commit

 

History

History
25 lines (16 loc) · 1.46 KB

housecor - 1581638360543600640.md

File metadata and controls

25 lines (16 loc) · 1.46 KB
author handle source date
Cory House
@housecor
2022-10-16 13:29:05 UTC

housecor Cory House (@housecor) - October 16, 2022 at 9:29 PM

TypeScript tip:

Avoid making a property optional when the property isn’t valid in a certain case.

Instead, declare 2 separate types, and use Omit to avoid copy/paste.

Example: Many objects lack an id until they're saved. So declare a separate "Unsaved" type.

#typescript pic.twitter.com/Wzzx3DtYEE

// Avoid making a property optional to support two separate scenarios. // Doing so redunces type safety. type User = {   // Making id optional since unsaved users don't have an id yet. 👎   id?: number;   name: string;   email: string; }   // Instead, declare separate types. Then each scenario is fully type safe. 👍  type User = {   id: number;   name: string;   email: string; }  // Separate type for unsaved users. // Deriving from the User type via Omit to keep types clean and lean. type UnsavedUser = Omit<User, "id">;

Tweet link

Thread by @housecor on Threadify Reader App