Olá, William!
Sua pergunta é muito pertinente e mostra que você está realmente entendendo os princípios do SOLID. Você está certo quando diz que, idealmente, a entidade deveria ser responsável apenas por descrever os objetos do seu negócio.
No entanto, na prática, muitas vezes precisamos fazer algumas concessões para aproveitar os benefícios de determinadas tecnologias. No caso do TypeORM, a decisão de incluí-lo diretamente nas entidades é uma dessas concessões. Isso permite que você aproveite todos os recursos do TypeORM, como a capacidade de definir relações complexas entre entidades, a facilidade de migração e a capacidade de realizar consultas complexas.
Por outro lado, você está correto em dizer que isso cria um acoplamento com o TypeORM. Se você decidir mudar para outro ORM no futuro, terá que reescrever suas entidades. No entanto, isso é uma troca que muitos desenvolvedores estão dispostos a fazer para aproveitar os benefícios do TypeORM.
Se você quiser seguir estritamente os princípios do SOLID, poderia criar uma camada de abstração entre suas entidades e o TypeORM. Isso permitiria que você trocasse o ORM sem ter que reescrever suas entidades. No entanto, isso também tornaria seu código mais complexo e poderia limitar a quantidade de funcionalidades do TypeORM que você poderia usar.
Então, em resumo, não há uma resposta definitiva para sua pergunta. Depende muito do contexto do seu projeto e das trocas que você está disposto a fazer.
Espero ter ajudado e bons estudos!