Edited at

TypeScriptのObject型とobject型は同じ……と思うじゃん?

TypeScriptにはObject型とobject型があるが、それぞれ違う型である。Object型はプリミティブ型のboolean, number, string, symbolも含むのに対し、object型はプリミティブ型を含まない。{}型はObject型と同じだ。

「AがObjectのサブタイプである」というのは「AがObject.prototypeと同じ構造のプロパティとメソッドを持つ」ということなので、そう考えるとBooleanNumberにも.toStringなどが生えており、それらがObject型に含まれるのは不思議なことではない。

Object.prototype - JavaScript | MDN