microsoft / microsoft/TypeScript

Design Meeting Notes, 2026-09-15

Abierto
#64,290 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Design Notes
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

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

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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.