Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

229
Vistas
¿Evitar que el compilador de TypeScript verifique clases enteras para ahorrar tiempo?

La compilación de mecanografiado está tardando mucho en ejecutarse, así que utilicé generateTrace de https://github.com/microsoft/TypeScript/pull/40063

Mostró que la mayor parte del tiempo estaba comparando clases complicadas con sus subclases. Por ejemplo, una de las clases es el modelo base Objection ( https://github.com/vincit/objection.js ), que es la clase base que heredan todos mis modelos.

Por ejemplo, tengo un código como:

 class User extends Model {} function doSomething(model: typeof Model) {} doSomething(User);

Tengo ~50 modelos. Creo que la primera vez que TS encuentra cada modelo es lento, luego lo almacena en caché. TS tarda aproximadamente 5 segundos en comparar un modelo específico con el Model base. Model usa tipos de varias bibliotecas. Aquí hay una captura de pantalla de la traza, se tarda 5 minutos en comparar cada modelo con Model :

ingrese la descripción de la imagen aquí

¿Hay alguna manera de hacer que TS salte la comparación de Model consigo mismo? Es decir, dado que el User extiende el Model , no es necesario verificar los campos que heredó.

Editar:

Reduje el tiempo para revisar los 50 modelos de 5min a 30s. Tengo un mapa de modelos:

 type ModelType = 'user' | ... type ModelsMap = { user: User, ... }; getModel<T extends ModelType>(type: T): ModelsMap[T] {}

Esto es lento porque ModelsMap[T] es una unión de todos los modelos. Se volvió más rápido si devuelvo el modelo base cuando T es una unión de todos los tipos de modelos:

 type TypeToModel<T extends ModelType> = ModelType extends T ? Model : ModelsMap[T]; getModel<T extends ModelType>(type: T): TypeToModel<T> {}

Sin embargo, sería bueno saber si hay trucos para hacer que la comparación de subclases sea más rápida. Por ejemplo, si es posible deshabilitar la escritura estructural y usar nominal para las subclases.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

No estoy seguro de que sea muy útil en su caso, pero puede acelerar drásticamente el proceso al permitir el indicador incremental en su comando tsc :

 // package.json "tsc": "tsc -v && tsc --noEmit --skipLibCheck --incremental",

Esto creará un archivo tsconfig.tsbuildinfo , que en realidad es un gráfico de su base de código. Typescript solo comparará las entradas que haya cambiado. La primera compilación será lenta, porque generará el gráfico, pero después, el tiempo de compilación se reducirá en 3 por lo menos.

over 4 years ago · Santiago Trujillo Denunciar

0

Algunas banderas tsc que pueden ayudar con la velocidad de compilación de TypeScript son skipLibCheck e incremental

Si eso aún no es lo suficientemente rápido, considere usar un compilador diferente a tsc (al menos en desarrollo). Algunos ejemplos de lo que podrías usar:

  • ts-node-dev
  • ts-nodo
  • swc
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda