microsoft / microsoft/TypeScript
Distribute property type union members to create union of object types
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 2 T. 4 Std.
- Gemergte PRs (30 T.)
- 132
Beschreibung
TypeScript Version: v3.9.0-dev.20200222
Search Terms: union type object property
Code
type Test =
| { b: [false, "a"] }
| { b: [true, "b"] }
declare const b2: boolean;
const a: Test = { b: b2 ? [b2, "b"] : [b2, "a"] }
Expected behavior:
No error. I'm not exactly sure if this is a bug or feature request but, essentially, it'd be nice if TS could recognize that: { b: [true, "b"] | [false, "a"]; } is identical to { b: [true, "b"] } | { b: [false, "a"]; }
Actual behavior:
Type '{ b: [true, "b"] | [false, "a"]; }' is not assignable to type 'Test'.
Type '{ b: [true, "b"] | [false, "a"]; }' is not assignable to type '{ b: [true, "b"]; }'.
Types of property 'b' are incompatible.
Type '[true, "b"] | [false, "a"]' is not assignable to type '[true, "b"]'.
Type '[false, "a"]' is not assignable to type '[true, "b"]'.
Type 'false' is not assignable to type 'true'.
Playground Link: Playground Link
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, die Zuweisung aus dem TypeScript-Codebeispiel des Issues im verlinkten Playground zu reproduzieren, und vergleiche die gemeldete Diagnose mit dem erwarteten Verhalten. Erledigt ist die Aufgabe, wenn das Beispiel akzeptiert wird und gleichzeitig die korrekte Prüfung inkompatibler Tupel- und Objekt-Unionen erhalten bleibt; im Issue wird keine Quelldatei oder kein Testpfad angegeben.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100