空オブジェクトを型として表現するときに{}を避けるべき
プロパティをひとつも含まないオブジェクトという表現にはRecord<K, T>が有用です。
このような用途ではRecord<string, never>という表現が使えます。どんな文字列をキーとするプロパティでも値はnever型である、つまり存在しえないという表現であるため、結果的にプロパティをひとつも含まない空のオブジェクトという表現として扱えます。
この表記はtypescript-eslint@ban-typesのルールとしても紹介されている手法です。すなわちSomething<T extends {}>というような{}の使い方をしてはならないという規則です。
これは{}が「任意のオブジェクト」を意図しているのか「プロパティをひとつも含まないオブジェクト」を意図しているのか、実装者以外の開発者に伝わらないためです。そのため、objectやRecord<string, never>を使うよう推奨されます。
code:memo.ts
type EmptyObject1 = Record<string, never>; // OK
type EmptyObject2 = {}; // NG
type EmptyObject3 = object; // OK