TSSLint 3.0: Última gran versión con menos dependencias y mejor rendimiento TypeScript

TSSLint, la herramienta de linting semántico para TypeScript creada por Johnson Chu, ha lanzado su versión 3.0. Anunciada como la “última gran release” del proyecto.

Esta actualización introduce mejoras importantes en rendimiento, reducción de dependencias y una transición más sencilla desde linters heredados como TSLint y ESLint.

Un linter integrado directamente en TypeScript

A diferencia de herramientas como ESLint, que funcionan como procesos externos, TSSLint opera directamente dentro del TypeScript Language Server.

Esto le permite:

  • Usar el TypeChecker nativo de TypeScript
  • Evitar conversiones a ESTree
  • Generar diagnósticos casi instantáneos
  • Reducir la latencia en editores grandes

Este enfoque mejora significativamente la experiencia en proyectos complejos donde el rendimiento del editor es crítico.

TSSLint 3.0 elimina esbuild y simplifica el runtime

Uno de los cambios más importantes en esta versión es la eliminación de la dependencia de esbuild.

Ahora TSSLint:

  • Utiliza soporte nativo de Node.js para importar archivos .ts
  • Reduce la complejidad del build system
  • Mejora el tiempo de arranque
  • Requiere Node.js 22.6.0 o superior

Este cambio simplifica el ecosistema y reduce la carga de mantenimiento.

Migración más fácil desde TSLint y ESLint

TSSLint 3.0 introduce varias mejoras para facilitar la migración desde herramientas antiguas:

  • Compatibilidad con reglas de TSLint
  • Paquete @tsslint/compat-eslint actualizado
  • Nueva función importTSLintRules
  • Integración con el proyecto TSL para unificar reglas

Esto permite a equipos grandes migrar gradualmente sin reescrituras completas.

Nuevas APIs y mejoras en el desarrollo

La versión 3 introduce nuevas herramientas para desarrolladores:

  • createIgnorePlugin para reglas de exclusión
  • tsslint-docgen para documentación automática de reglas
  • Mejora en JSDoc para defineRules
  • Cache del CLI movido al directorio temporal del sistema

Estas mejoras hacen que el mantenimiento de reglas sea más limpio y escalable.

Cambios importantes y breaking changes

Como parte de su última gran versión, TSSLint 3.0 incluye cambios incompatibles:

  • --projects renombrado a --project
  • createDisableNextLinePlugin reemplazado por createIgnorePlugin
  • Eliminación completa del flag --threads
  • Requerimiento mínimo de Node.js 22.6.0

El equipo justificó la eliminación del multi-threading por su bajo rendimiento energético en comparación con las mejoras obtenidas.

Comparación con ESLint, Biome y oxlint

El ecosistema de linting en TypeScript está evolucionando rápidamente:

  • ESLint + typescript-eslint: estándar más adoptado
  • Biome / oxlint: extremadamente rápidos, pero menos profundos en análisis de tipos
  • TSSLint: enfoque híbrido con análisis semántico completo

La ventaja clave de TSSLint es su integración directa con el TypeScript Compiler API, lo que le permite un análisis más profundo que herramientas puramente sintácticas.

Limitaciones importantes

TSSLint 3.0 no es compatible con:

  • TypeScript 7 (typescript-go)
  • Sistemas basados en plugins externos del Language Service

Esto podría limitar su adopción futura si el ecosistema TypeScript evoluciona hacia nuevos compiladores.

¿Qué es TSSLint?

TSSLint es un linter open-source diseñado para TypeScript que se integra directamente en el Language Server.

Fue creado por Johnson Chu como sucesor conceptual de TSLint, buscando resolver problemas de rendimiento y precisión en análisis de código.


Conclusión

TSSLint 3.0 marca el cierre de una etapa importante en el ecosistema de linting para TypeScript. Con menos dependencias, mejor integración con el Language Server y un enfoque más semántico, se posiciona como una alternativa avanzada a ESLint en proyectos donde el rendimiento y la precisión son críticos.

Vistas: 0