TypeScriptである型の部分型であることを保証する型定義

言い換えると、あるオブジェクトAに存在するプロパティが、あるオブジェクトBに生えているプロパティのいずれかに該当することを保証し、かつどのプロパティが生えてるかは自由、という感じにしたい。

追記:
id:nanto_vi さんに教えていただいたのですが、組み込みで Partial という型があり、基本的にはこちらを使えば良さそうです。
TypeScript: Documentation - Utility Types

以下中身がどうなっているかなど

keyofとMapped Type使えばなんかできそうだなーと思いつつも

type PartialObjectOf<T> = {
  [P in keyof T] : T[P]
}

こんな風に書くと結局全てのプロパティを持っていないといけないし、どうすればスマートに書けるかなーと思っていた。
実際にはこう書けば良い

type PartialObjectOf<T> = {
  [P in keyof T]? : T[P]
}

要はプロパティがoptionalであることを示せばよいわけですね。
ちなみに一部のプロパティが確実にあることを保証したい場合は以下のように交差型を使用すればよいです。

type PartialObjectOf<T> = {
  [P in keyof T]? : T[P]
} & { prop: string }