Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

376
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!