microsoft / microsoft/TypeScript
Design Meeting Notes, 2026-09-15
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.3k
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 132
Descripción
# Better Type Inference Self-Referential Values
- https://github.com/microsoft/TypeScript/issues/64192
- https://github.com/microsoft/TypeScript/issues/62180
- https://github.com/microsoft/TypeScript/issues/62181
- https://github.com/microsoft/TypeScript/pull/64172
- https://github.com/microsoft/TypeScript/pull/64248
```ts
const Category = z.object({
get subcategories() {
// ~~~~~~~~~~~~~
// Subcategory implicitly has type 'any' because of circular
// resolution.
return z.array(Category);
}
});
```
* Zod and similar libraries are motivation here.
* While processing the object literal, we normally defer return types for `get` accessors.
* But when validating the constraint, we start pulling on those very types.
* One idea: when we try to resolve a call that is already undergoing resolution, we say "don't check constraints".
* Why don't we disable constraint checking for all calls and do it in another pass?
* We're not always interested in just generating an error, we're often trying to grab the constraint for other information (e.g. if there's no candidates, we have to fix to the constraint).
* How does this affect overloads? Because this would affect how we choose overloads, right?
* Should not play in?
* Could we just return the original *uninstantiated* type parameter from the call when you detect this circularity?
* How would that work? Isn't that a type parameter leak?
* Yes, but the idea is there's an "outer" call and an "inner" call. The inner call would leak a type parameter (e.g. `T`) and the outer call would instantiate it after inference.
* Scary, but maybe!
* Outstanding PRs are likely not quite what we're looking for, but may have a PR prototyping these ideas soon.
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
Comienza leyendo los issues vinculados 64192, 62180 y 62181; después, revisa los PRs 64172 y 64248 para conocer los enfoques existentes. Las notas analizan varios diseños sin resolver para la inferencia circular de tipos, los overloads, las constraints y la filtración de parámetros de tipo, pero no identifican archivos, tests ni un criterio de finalización.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- typescript
- Área
- compilers
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Activo
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 20/100