Introdução
ORM (Object-Relational Mapping) é utilizado para facilitar a comunicação entre uma linguagem orientada a objetos a um banco de dados relacional.
Este recurso está sendo muito utilizado por alguns motivos.
A produtividade durante o desenvolvimento pode aumentar, pois o desenvolvedor não precisa escrever grandes SQLs, a linguagem de escrita deles normalmente é mais fácil de entender.
É possível separar mais fácil a camada de acesso ao banco de dados e todas as consultas feitas a ele, deixando o código mais limpo também.
O banco de dados também tem uma abstração, e isso permite alterá-lo ou trabalhar com mais bancos em conjunto e com menos esforço.
É possível também, mapear as atualizações de bancos de dados em migrations, e isso facilita muito para ambiente de desenvolvimento e produção.
Utilizar este recurso para manter um projeto com Node.js, pode ajudar muito, veja algumas soluções para Node.js.
TypeORM

Pode ser executado no Node.js e pode ser utilizado com TypeScript e com Javascript (ES5, ES6, ES7, ES8). Seu objetivo é sempre oferecer suporte aos recursos mais novos da linguagem e fornecer recursos adicionais para ajudar o programador durante o desenvolvimento.
Alguns recursos dele:
- Suporta Active Record e Data Mapper
- Entidades e colunas
- Tipos de colunas específicos para bancos de dados
- Gerente de entidade
- Muito mais
No momento que este artigo foi escrito, o pacote da biblioteca no NPM conta com mais de 600 mil downloads mensais e a última publicação há dois meses, isso é bom, porque mostra que a biblioteca foi atualizada recentemente.
Link oficial da biblioteca aqui.
Sequelize

O Sequelize pode ser utilizado com os bancos Postgres, Mysql, Sqlite e Sql Server.
Oferece suporte a relacionamentos, transações sólidas, carregamento rápido e lento, replicação de leitura e muito mais.
Atualmente oferece suporte ao Node 10 e superior.
Sua biblioteca conta com mais de 1 milhão de downloads semanais no NPM e também recebeu atualizações recentes.
Veja a página oficial aqui.
Knex

O Knex não é um ORM em si, mas sim um construtor de consultas, ele é mais simples, porém isso pode ser uma vantagem, pois é mais leve e fácil de configurar no projeto.
Com ele é possível fazer a conexão com bancos de dados, e construir consultas sem precisar escrever o SQL, porém, caso queira, isso também é possível.
Funciona com os bancos MySQL, Postgres, Oracle, MariaDB e SQLite3.
Atualmente sua biblioteca no NPM conta com mais de 700 mil downloads semanais e também teve atualizações recentes, a mais recente foi no último mês.
Veja a página oficial aqui.
Qual o melhor?
Não há um melhor ou pior entre eles, depende muito de cada caso. Mas vou deixar minha opinião sobre alguns pontos sobre eles.
Se você já trabalhou com Hibernate, Doctrine ou Entity Framework, provavelmente vai se adaptar mais com o TypeORM, porque ele foi construído com inspiração neles.
O Sequelize é o que mais tem downloads, e isso mostra um uso maior sobre ele, além disso, ele tem muitos recursos, que provavelmente se encaixa em todos os casos do dia a dia.
O Knex, mesmo que não seja um ORM, ele é um bom construtor de consultas e facilita muito o trabalho, a configuração dele também é menor, provavelmente em projetos menores ele se adapte melhor.
Conclusão
Os três são muito bons, o ideal é entender qual o caso de uso e qual o problema você quer resolver, para ai sim decidir qual o melhor.
Nenhum deles é uma solução bala de prata, sempre terá prós e contras, mas com certeza, todos eles são ótimas soluções para utilizar no dia a dia.
Para ver outros canais onde o posto conteúdo, veja os Links do Programando Soluções.
Referências
https://www.treinaweb.com.br/blog/o-que-e-orm
https://www.devmedia.com.br/orm-object-relational-mapper/19056
https://typeorm.io/#/active-record-data-mapper/what-is-the-active-record-pattern
https://typeorm.io/#/active-record-data-mapper/what-is-the-data-mapper-pattern
https://www.npmjs.com/package/typeorm