microsoft / microsoft/TypeScript

Fast path opportunity in `checkVariableLikeDeclaration`

Abierto
#53,108 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Experience Enhancement Suggestion
Lenguaje dominante
Go
Estrellas
111k
Forks
14.4k
Merge medio
1 d 19 h
PR fusionados (30 d)
117

Descripción

I noticed that for this code:

class A {
  state = { foo: "foo", bar: 42 };
}

checkVariableLikeDeclaration calls checkTypeAssignableToAndOptionallyElaborate here:
https://github.dev/microsoft/TypeScript/blob/e9868e96e87996df46a13b4323866acc639e71ce/src/compiler/checker.ts#L40690

This is likely redundant for cases without a declared type as it's guaranteed that this has to return true. I thought at first that this would rely on a fast past based on the type.id but it seems that those types have different ids (perhaps one is fresh while the other one isn't or something?).

I'm happy to explore this optimization. But perhaps you'd have some preferences as to at which level this should be applied?

cc @jakebailey

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza en src/compiler/checker.ts, en checkVariableLikeDeclaration y su llamada a checkTypeAssignableToAndOptionallyElaborate. Usa el ejemplo de campo de clase del issue para investigar si la comprobación es redundante cuando no hay un tipo declarado y si los distintos type IDs son relevantes. Confirma el comportamiento de la optimización y mide si mejora esta ruta.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
typescript
Área
compilers, performance
Tipo de issue
Refactorización
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.