Design Meeting Notes, 2026-09-15

未关闭
#64,290 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
20/100
Issue 类型
功能
描述清晰度
需要澄清
活跃度
活跃
技术栈
typescript
领域
compilers

调研方向

首先阅读链接的 issue 64192、62180 和 62181,然后查看 PR 64172 和 64248,以了解现有的方法。这些注释讨论了循环类型推断、重载、约束以及类型参数泄漏的几种尚未解决的设计,但没有指出文件、测试或完成标准。

由索引模型根据 Issue 内容生成。

描述

Design Notes

Better Type Inference Self-Referential Values

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.
主要语言
Go
星标
111k
派生
14.4k
平均合并
1 天 19 小时
30 天内合并 PR
117

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

microsoft/TypeScript 的其他 Issue

查看 microsoft/TypeScript 的全部 Issue

相似的 Issue

更多 Go Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。