microsoft / microsoft/TypeScript

Design Meeting Notes, 2026-09-15

Open
#64,290 0 comments 0 reactions 0 assignees View on GitHub
Design Notes
Dominant language
Go
Stars
111k
Forks
14.3k
PR merge metrics
PR metrics pending

Description

# 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.

Contributor guide

Open the contributing guide

Research direction

Start by reading the linked issues 64192, 62180, and 62181, then review PRs 64172 and 64248 for existing approaches. The notes discuss several unresolved designs for circular type inference, overloads, constraints, and type-parameter leakage, but do not identify files, tests, or a completion criterion.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.