microsoft / microsoft/TypeScript

Broken inference for generic classes passed to a generic function taking an optional class

Đang mở
#61,633 4 bình luận 0 reaction 1 người được giao Được @ahejlsberg nhận Xem trên GitHub
Needs Investigation
Ngôn ngữ chính
Go
Star
111k
Fork
14.3k
Merge trung bình
2 ngày 4 giờ
Pull request đã merge (30 ngày)
132

Mô tả

### 🔎 Search Terms

class inference, optional class, broken inference

### 🕗 Version & Regression Information

This changed in PR https://github.com/microsoft/TypeScript/pull/31116

However, this was the first time that there was even a distinction between a generic and non-generic class during inference to my knowledge. This likely means this has existed ever since the ability to infer a generic class has existed.

### ⏯ Playground Link

https://www.typescriptlang.org/play/?#code/C4TwDgpgBAggdiAwgezgZ2AJwK4GNjKZQC8UcEA7lABQB09AhpgOZoBcUDCA2gLoCUJAHxRkAIwBWEfAG4AUHIBm2OPgCWqKACUIcACYRMAMQA2DVgFk1ADzVwAPACEGaCIjNo0UCNeC69XvBIqBg4+IRQAD5QKgaKdhB6JDH6EPHkekLUclC5UM6uAPwcBW4eaAA0coIA3gC+8nK45VAocMAMCZj2ACoi9Qo6qcZmljZ21G0dXfxyAPRzeUvLeQB6sCzYALa6wKKKUKCQUADkRxDIB1Od5JgnUGpecMh7LmhqzHAMYibQBFBgJgMHZ+IiXQ7gaAnWJpBJ6E60IA

### 💻 Code

```ts
type AnyConstructor = new (...args: any[]) => object;

function RenderFlagsMixin(
Base?: BaseClass,
) {};

class Container {}
// ^ Only happens when the class is generic.

RenderFlagsMixin(Container)
// ^ Argument of type 'typeof Container' is not assignable to parameter of type 'undefined'.
```

### 🙁 Actual behavior

`BaseClass` is inferred as `undefined` despite the call being the value `Container`.

### 🙂 Expected behavior

`BaseClass` should be inferred as `typeof Container`.

### Additional information about the issue

_No response_

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.