Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
Back to tool/Back to issues
#64290·TypeScript

Design Meeting Notes, 2026-09-15

Author: DanielRosenwasserCreated Sep 15, 2026Updated Sep 15, 2026
LabelsDesign Notes

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

Source: microsoft/TypeScript

View original on GitHubView discussion on GitHub