microsoft / microsoft/TypeScript
Exclude<keyof T, 'x'> should be assignable to Exclude<Exclude<keyof T, 'x'>, 'x'>
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
TypeScript Version: 3.8.3
Search Terms:
- type Exclude keyof is not assignable to type Exclude Exclude keyof
- exclude idempotent
Code
const f = <T>(arg: Omit<T, 'field'>) => {
const a = { ...arg, field: 'value' };
const { field, ...b } = a;
const c: Omit<T, 'field'> = a;
const d: Omit<T, 'field'> = b;
return { c, d };
};
Expected behavior:
Code compiles.
Actual behavior:
Compilation error on d initialization (but not on c initialization):
tmp.ts:5:11 - error TS2322: Type 'Pick<Pick<T, Exclude<keyof T, "field">> & { field: string; }, Exclude<Exclude<keyof T, "field">, "field">>' is not assignable to type 'Pick<T, Exclude<keyof T, "field">>'.
Type 'Exclude<keyof T, "field">' is not assignable to type 'Exclude<Exclude<keyof T, "field">, "field">'.
Type 'keyof T' is not assignable to type 'Exclude<keyof T, "field">'.
5 const d: Omit<T, 'field'> = b;
~
Found 1 error.
Playground Link: Playground Link
Related Issues: I did not find other related issues.
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
Reproduisez l’exemple générique Omit/Exclude dans le TypeScript Playground lié en utilisant le comportement signalé de TypeScript 3.8.3, puis comparez-le avec la dernière version nightly. Suivez le chemin de vérification des types pour l’affectation qui échoue afin de déterminer pourquoi le Exclude imbriqué est rejeté ; le travail est considéré comme terminé lorsque l’exemple se compile et qu’un test de régression couvre ce cas.
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é
- Clairement spécifiée
- Accessibilité débutants
- 42/100