microsoft / microsoft/TypeScript

Uncomputed generic type does not follow structural typing

Ouverte
#52,096 1 commentaire 0 réactions 1 personne assignée Voir sur GitHub

@weswigham y travaille déjà.

Depuis le 26/6/2023.

Bug Domain: check: Variance Relationships Rescheduled
Langage dominant
Go
Étoiles
111k
Forks
14.3k
Merge moyen
1 j 19 h
PR mergées (30 j)
117

Description

Bug Report

🔎 Search Terms

generic
unassignable type
uncomputed type

🕗 Version & Regression Information
⏯ Playground Link

Playground link with relevant code

💻 Code
class A {
    x: string = 'A';
    y: number = 0;
}

class B {
    x: string = 'B';
    z: boolean = true;
}

type T<X extends { x: any }> = Pick<X, 'x'>;

type C = T<A>;
type D = T<B>;

type C_extends_D = C extends D ? true : false;                                  // true
type PickA_extends_PickB = Pick<A, 'x'> extends Pick<B, 'x'> ? true : false;    // true
type TA_extends_TB = T<A> extends T<B> ? true : false;                          // false (?)

declare let a: T<A>;
declare let b: T<B>;
declare let c: C;
declare let d: D;

b = a;      // error here (?)
c = d;
🙁 Actual behavior
  • Type TA_extends_TB is false.
  • a is not assignable to b.
🙂 Expected behavior
  • All types TA_extends_TB should be true, the same way as C_extends_D and PickA_extends_PickB.
  • a should be assignable to b and vice-versa, the same way as c and d.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.