Microsoft/TypeScript

Incorrect type inference for generic class in JavaScript

开放

#61,552 创建于 2025年4月5日

 (0 条评论) (0 个反应) (0 位负责人)TypeScript (13,395 个派生)batch import
BugDomain: check: Type InferenceHelp Wanted

仓库指标

星标
 (108,860 个星标)
PR 合并指标
 (PR 指标待抓取)

描述

Does this issue occur when all extensions are disabled?: Yes

  • VS Code Version: 1.99.0
  • OS Version: Windows 10 Home 22H2

Steps to Reproduce:

  1. Define a generic class as below:
    /** @template T */
    class C {
      /** @param {T} a */
      constructor(a) { }
      f() { const v = new C(/** @type {T[]} */ ([])); }
    }
    
  2. The type of the variable v is incorrectly inferred to be C<T[][]>.

If the constructor call is outside of the class C<T> (as in the example below), the return type of the call is correctly inferred to be C<T[]>.

/** @template T */
class D {
  f() { const v = new C(/** @type {T[]} */ ([])); }
}
/** @template T; @param {C<T>} c */
const f = c => { const v = new C(/** @type {T[]} */ ([])); }

贡献者指南