microsoft / microsoft/TypeScript
Conditional type flow types missing in the template in mapped types with as clause
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 132
Description
### 🔎 Search Terms
as clause renaming filtering mapped type conditional type flow
### 🕗 Version & Regression Information
- This is the behavior in every version I tried
### ⏯ Playground Link
https://www.typescriptlang.org/play/?ts=5.9.0-dev.20250222#code/C4TwDgpgBAggxnCZgDkD2A7FBXANrgQwCNcIAeAFSggA9gIMATAZygG8BfAPigF4oKAbgBQw0JAERmwSj35thUKAG0A0lACWGKAGsIINADMBUAqwpqAutToMW7DlAD8UdQC4oGCADcIAJ0sPeERkdCw8QhJyC1VLLhEOESA
### 💻 Code
```ts
type AcceptNonNullable = T;
type Test = {
[K in keyof T as T[K] extends {} ? K : never]: AcceptNonNullable;
};
```
### 🙁 Actual behavior
`AcceptNonNullable` errors with:
```
Type 'T[K]' does not satisfy the constraint '{}'.
Type 'T[keyof T]' is not assignable to type '{}'.
Type 'T[string] | T[number] | T[symbol]' is not assignable to type '{}'.
Type 'T[string]' is not assignable to type '{}'.(2344)
```
### 🙂 Expected behavior
It doesn't have to error. It's known that `T[K]` has to extend `{}` at this position
### Additional information about the issue
_No response_
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par la reproduction liée dans TypeScript Playground et examinez la manière dont le vérificateur de types traite la clause `as` et la contrainte conditionnelle du type mappé. Suivez la raison pour laquelle la contrainte sur `AcceptNonNullable` n'est pas reconnue, puis confirmez que l'exemple ne signale plus l'erreur 2344 tout en préservant le comportement de filtrage.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 38/100