RequiredPick

go previous

by default, the required makes everything required, but you can use this type to make a required pick of a type.

export type RequiredPick<T, key extends keyof T> = Required<Pick<T, key>> & T;

Installation

pnpm dlx shadcn@latest add https://mhl5.vercel.app/r/RequiredPick.json

Usage

import { RequiredPick } from "@/types/RequiredPick";

type Order = {
  orderId?: number;
  customerName?: string;
  amount?: number;
  status: string;
  createdAt: string;
};

type RequiredOrder = RequiredPick<Order, "orderId" | "amount">;

// Equivalent to:
type RequiredOrder = {
  orderId: number;
  amount: number;
  customerName?: string;
  status: string;
  createdAt: string;
};