microsoft / microsoft/TypeScript
Fast path opportunity in `checkVariableLikeDeclaration`
Nadie ha tomado este issue todavía.
- 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
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- 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