>>875の場合はA型をB型にキャストするのは型安全で逆は非安全だから、通常の継承とは逆になってしまう
TypeScriptみたいに type B = A & enum { B1, B2 } ができるといいんだろうね