Closed as not planned
Closed as not planned
Description
Bug Report
🔎 Search Terms
too many union members
🕗 Version & Regression Information
- This is a false type error: "Type A is not assignable to type B. (2345)"
- This is reproducible in all TS versions that are currently available in Playground (3.3.3 - 4.8.4, Nightly 5.0.0-dev.20221120)
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about union types
⏯ Playground Link
Playground link with relevant code
💻 Code
type T01 = { variant: '01'; field01?: string; };
type T02 = { variant: '02'; field02?: string; };
type T03 = { variant: '03'; field03?: string; };
type T04 = { variant: '04'; field04?: string; };
type T05 = { variant: '05'; field05?: string; };
type T06 = { variant: '06'; field06?: string; };
type T07 = { variant: '07'; field07?: string; };
type T08 = { variant: '08'; field08?: string; };
type T09 = { variant: '09'; field09?: string; };
type T10 = { variant: '10'; field10?: string; };
type T11 = { variant: '11'; field11?: string; };
type T12 = { variant: '12'; field12?: string; };
type T13 = { variant: '13'; field13?: string; };
type T14 = { variant: '14'; field14?: string; };
type T15 = { variant: '15'; field15?: string; };
type T16 = { variant: '16'; field16?: string; };
type T17 = { variant: '17'; field17?: string; };
type T18 = { variant: '18'; field18?: string; };
type T19 = { variant: '19'; field19?: string; };
type T20 = { variant: '20'; field20?: string; };
type T21 = { variant: '21'; field21?: string; };
type T22 = { variant: '22'; field22?: string; };
type T23 = { variant: '23'; field23?: string; };
type T24 = { variant: '24'; field24?: string; };
type T25 = { variant: '25'; field25?: string; };
type T26 = { variant: '26'; field26?: string; };
type UnionType =
| T01 | T02 | T03 | T04 | T05 | T06 | T07 | T08 | T09 | T10
| T11 | T12 | T13 | T14 | T15 | T16 | T17 | T18 | T19 | T20
| T21 | T22 | T23 | T24 | T25
| T26 // If you comment this line, then the type error at last line goes away.
;
const someFunction = (param: UnionType) => { param; };
const variants: UnionType['variant'][] = [];
variants.forEach(variant => someFunction({ variant }));
🙁 Actual behavior
TS compiler produces false type error at last line:
Type '"01"' is not assignable to type '"26"'. (2345)
This behavior starts if UnionType
has at least 26 members.
🙂 Expected behavior
TS can handle union types with more than 25 members.
Metadata
Metadata
Assignees
Labels
No labels