オブジェクトのプロパティから一部のプロパティを省略可能にする方法。 省略可能にするプロパティを指定する方法と、指定プロパティ以外を省略可能にする2つの方法があります。

参考

省略可能にするプロパティを指定する

type PickPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
省略可能にするプロパティ名を K に定します。

type PickPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;

type Address = {
  prefectureCode: number;
  city: string;
  address: string;
  building: string;
};

type SearchParams = PickPartial<Address, "address" | "building">;

const input: SearchParams = {
  prefectureCode: 13,
  city: "新宿区",
};

指定以外のプロパティを省略可能にする

type PartialExcept<T, K extends keyof T> = Pick<T, K> & Partial<Omit<T, K>>;
省略可能にしないプロパティ名を K に指定します。

type PartialExcept<T, K extends keyof T> = Pick<T, K> & Partial<Omit<T, K>>;

type Address = {
  prefectureCode: number;
  city: string;
  address: string;
  building: string;
};

type SearchParams = PartialExcept<Address, "prefectureCode" | "city">;

const input: SearchParams = {
  prefectureCode: 13,
  city: "新宿区",
};