TypeScript icon indicating copy to clipboard operation
TypeScript copied to clipboard

Sort unions without using type IDs

Open jakebailey opened this issue 9 months ago • 12 comments

This is a port of https://github.com/microsoft/typescript-go/pull/200; unions are now sorted consistently without using type IDs.

Whether or not to merge this, I have no idea, but I really want to see the perf and results.

(That and it's needed for the port for comparing baselines.)

jakebailey avatar Mar 11 '25 14:03 jakebailey

Looks like you're introducing a change to the public API surface area. If this includes breaking changes, please document them on our wiki's API Breaking Changes page.

Also, please make sure @DanielRosenwasser and @RyanCavanaugh are aware of the changes, just as a heads up.

typescript-bot avatar Mar 11 '25 14:03 typescript-bot

@typescript-bot test it @typescript-bot pack this

jakebailey avatar Mar 11 '25 14:03 jakebailey

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
pack this ✅ Started ✅ Results
test top400 ✅ Started 👀 Results
user test this ✅ Started 👀 Results
run dt ✅ Started 👀 Results
perf test this faster ✅ Started 👀 Results

typescript-bot avatar Mar 11 '25 14:03 typescript-bot

Hey @jakebailey, I've packed this into an installable tgz. You can install it for testing by referencing it in your package.json like so:

{
    "devDependencies": {
        "typescript": "https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/_apis/build/builds/164916/artifacts?artifactName=tgz&fileId=A2FCB945B94ACDC53E3D7A4F45018123C015539C515E48C2EC519EDF4BA4625B02&fileName=/typescript-5.9.0-insiders.20250311.tgz"
    }
}

and then running npm install.


There is also a playground for this build and an npm module you can use via "typescript": "npm:@typescript-deploys/[email protected]".;

typescript-bot avatar Mar 11 '25 14:03 typescript-bot

@jakebailey Here are the results of running the user tests with tsc comparing main and refs/pull/61399/merge:

Something interesting changed - please have a look.

Details

effect

tsconfig.json

tsconfig.build.json

tsconfig.base.json

packages/platform/dtslint/tsconfig.json

lodash

/mnt/ts_downloads/_/m/lodash/tsconfig.json

  • [NEW] error TS2322: Type 'void | boolean' is not assignable to type 'boolean'.
    • /mnt/ts_downloads/_/m/lodash/node_modules/lodash/core.js(1361,5)
  • [MISSING] error TS2322: Type 'boolean | void' is not assignable to type 'boolean'.
    • /mnt/ts_downloads/_/m/lodash/node_modules/lodash/core.js(1361,5)

puppeteer

packages/puppeteer-core/tsconfig.json

typescript-bot avatar Mar 11 '25 15:03 typescript-bot

Hey @jakebailey, the results of running the DT tests are ready.

There were interesting changes:

Branch only errors:

Package: react-redux/v5 Error:

Error: 
/mnt/vss/_work/1/DefinitelyTyped/types/react-redux/v5/react-redux-tests.tsx
   87:7   error  TypeScript@local compile error: 
Argument of type 'typeof TestComponent' is not assignable to parameter of type 'Component<(() => { bar: number; }) & DispatchProp<any>>'.
  Type 'typeof TestComponent' is not assignable to type 'ComponentClass<(() => { bar: number; }) & DispatchProp<any>, any>'.
    Types of parameters 'props' and 'props' are incompatible.
      Type '(() => { bar: number; }) & DispatchProp<any>' is not assignable to type 'OwnProps & StateProps'.
        Type '(() => { bar: number; }) & DispatchProp<any>' is not assignable to type 'OwnProps'                                              @definitelytyped/expect
   89:26  error  TypeScript@local compile error: 
Type '{ foo: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<Omit<(() => { bar: number; }) & DispatchProp<any>, "dispatch">, any, any>> & Readonly<...>'.
  Property 'foo' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<Omit<(() => { bar: number; }) & DispatchProp<any>, "dispatch">, any, any>> & Readonly<...>'                                                                                                                                                                                          @definitelytyped/expect
  236:7   error  TypeScript@local compile error: 
Argument of type 'typeof TestComponent' is not assignable to parameter of type 'Component<(() => { bar: number; }) & { onClick: () => void; }>'.
  Type 'typeof TestComponent' is not assignable to type 'ComponentClass<(() => { bar: number; }) & { onClick: () => void; }, any>'.
    Types of parameters 'props' and 'props' are incompatible.
      Type '(() => { bar: number; }) & { onClick: () => void; }' is not assignable to type 'OwnProps & StateProps & DispatchProps'.
        Type '(() => { bar: number; }) & { onClick: () => void; }' is not assignable to type 'OwnProps'  @definitelytyped/expect
  238:26  error  TypeScript@local compile error: 
Type '{ foo: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<Omit<(() => { bar: number; }) & { onClick: () => void; }, "onClick">, any, any>> & Readonly<...>'.
  Property 'foo' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<Omit<(() => { bar: number; }) & { onClick: () => void; }, "onClick">, any, any>> & Readonly<...>'                                                                                                                                                                              @definitelytyped/expect
  265:7   error  TypeScript@local compile error: 
Argument of type 'typeof TestComponent' is not assignable to parameter of type 'Component<(() => { bar: number; }) & { onClick: () => void; }>'.
  Type 'typeof TestComponent' is not assignable to type 'ComponentClass<(() => { bar: number; }) & { onClick: () => void; }, any>'.
    Types of parameters 'props' and 'props' are incompatible.
      Type '(() => { bar: number; }) & { onClick: () => void; }' is not assignable to type 'OwnProps & StateProps & DispatchProps'.
        Type '(() => { bar: number; }) & { onClick: () => void; }' is not assignable to type 'OwnProps'  @definitelytyped/expect
  267:26  error  TypeScript@local compile error: 
Type '{ foo: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<Omit<(() => { bar: number; }) & { onClick: () => void; }, "onClick">, any, any>> & Readonly<...>'.
  Property 'foo' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<Omit<(() => { bar: number; }) & { onClick: () => void; }, "onClick">, any, any>> & Readonly<...>'                                                                                                                                                                              @definitelytyped/expect

✖ 6 problems (6 errors, 0 warnings)

    at combineErrorsAndWarnings (/mnt/vss/_work/1/DefinitelyTyped/node_modules/.pnpm/@[email protected][email protected]/node_modules/@definitelytyped/dtslint/dist/index.js:194:28)
    at runTests (/mnt/vss/_work/1/DefinitelyTyped/node_modules/.pnpm/@[email protected][email protected]/node_modules/@definitelytyped/dtslint/dist/index.js:186:20)

Package: json-logic-js Error:

Out of memory

Package: react-redux/v6 Error:

Error: 
/mnt/vss/_work/1/DefinitelyTyped/types/react-redux/v6/react-redux-tests.tsx
   98:21  error  TypeScript@local compile error: 
Property 'bar' is missing in type '{ foo: string; }' but required in type 'Readonly<Omit<OwnProps & StateProps, never>>'                      @definitelytyped/expect
  339:21  error  TypeScript@local compile error: 
Property 'bar' is missing in type '{ foo: string; }' but required in type 'Readonly<Omit<OwnProps & StateProps & DispatchProps, "onClick">>'  @definitelytyped/expect
  368:21  error  TypeScript@local compile error: 
Property 'bar' is missing in type '{ foo: string; }' but required in type 'Readonly<Omit<OwnProps & StateProps & DispatchProps, "onClick">>'  @definitelytyped/expect

✖ 3 problems (3 errors, 0 warnings)

    at combineErrorsAndWarnings (/mnt/vss/_work/1/DefinitelyTyped/node_modules/.pnpm/@[email protected][email protected]/node_modules/@definitelytyped/dtslint/dist/index.js:194:28)
    at runTests (/mnt/vss/_work/1/DefinitelyTyped/node_modules/.pnpm/@[email protected][email protected]/node_modules/@definitelytyped/dtslint/dist/index.js:186:20)

Package: react-redux Error:

Error: 
/mnt/vss/_work/1/DefinitelyTyped/types/react-redux/react-redux-tests.tsx
  108:21  error  TypeScript@local compile error: 
Property 'bar' is missing in type '{ foo: string; }' but required in type 'Omit<ClassAttributes<TestComponent> & OwnProps & StateProps, never>'                      @definitelytyped/expect
  378:21  error  TypeScript@local compile error: 
Property 'bar' is missing in type '{ foo: string; }' but required in type 'Omit<ClassAttributes<TestComponent> & OwnProps & StateProps & DispatchProps, "onClick">'  @definitelytyped/expect
  407:21  error  TypeScript@local compile error: 
Property 'bar' is missing in type '{ foo: string; }' but required in type 'Omit<ClassAttributes<TestComponent> & OwnProps & StateProps & DispatchProps, "onClick">'  @definitelytyped/expect

✖ 3 problems (3 errors, 0 warnings)

    at combineErrorsAndWarnings (/mnt/vss/_work/1/DefinitelyTyped/node_modules/.pnpm/@[email protected][email protected]/node_modules/@definitelytyped/dtslint/dist/index.js:194:28)
    at runTests (/mnt/vss/_work/1/DefinitelyTyped/node_modules/.pnpm/@[email protected][email protected]/node_modules/@definitelytyped/dtslint/dist/index.js:186:20)

Package: ramda Error:

Error: 
/mnt/vss/_work/1/DefinitelyTyped/types/ramda/test/fromPairs-tests.ts
  13:5  error  TypeScript@local expected type to be:
  { 2: string; 1: string; }
got:
  { 1: string; 2: string; }  @definitelytyped/expect

✖ 1 problem (1 error, 0 warnings)

    at combineErrorsAndWarnings (/mnt/vss/_work/1/DefinitelyTyped/node_modules/.pnpm/@[email protected][email protected]/node_modules/@definitelytyped/dtslint/dist/index.js:194:28)
    at runTests (/mnt/vss/_work/1/DefinitelyTyped/node_modules/.pnpm/@[email protected][email protected]/node_modules/@definitelytyped/dtslint/dist/index.js:186:20)

Package: codemirror Error:

Error: 
/mnt/vss/_work/1/DefinitelyTyped/types/codemirror/test/addon/lint/lint.ts
  61:5  error  TypeScript@local compile error: 
Unused '@ts-expect-error' directive                                                                                                                                                     @definitelytyped/expect
  63:9  error  TypeScript@local compile error: 
Type '(content: string, options: any, cm: Editor) => null' is not assignable to type 'Linter<any>'.
  Type 'null' is not assignable to type 'Annotation[] | PromiseLike<Annotation[]>'  @definitelytyped/expect

✖ 2 problems (2 errors, 0 warnings)

    at combineErrorsAndWarnings (/mnt/vss/_work/1/DefinitelyTyped/node_modules/.pnpm/@[email protected][email protected]/node_modules/@definitelytyped/dtslint/dist/index.js:194:28)
    at runTests (/mnt/vss/_work/1/DefinitelyTyped/node_modules/.pnpm/@[email protected][email protected]/node_modules/@definitelytyped/dtslint/dist/index.js:186:20)

You can check the log here.

typescript-bot avatar Mar 11 '25 15:03 typescript-bot

@jakebailey The results of the perf run you requested are in!

Here they are:

tsc

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-Unions - node (v18.15.0, x64)
Errors 34 34 ~ ~ ~ p=1.000 n=6
Symbols 62,390 62,312 -78 (- 0.13%) ~ ~ p=0.001 n=6
Types 50,395 50,392 -3 (- 0.01%) ~ ~ p=0.001 n=6
Memory used 194,149k (± 0.98%) 195,786k (± 0.75%) ~ 192,795k 196,403k p=0.810 n=6
Parse Time 1.31s (± 0.84%) 1.30s (± 0.79%) ~ 1.29s 1.31s p=0.530 n=6
Bind Time 0.73s 0.73s (± 0.56%) ~ 0.73s 0.74s p=0.405 n=6
Check Time 9.76s (± 0.15%) 12.10s (± 0.64%) 🔻+2.34s (+23.97%) 12.00s 12.23s p=0.005 n=6
Emit Time 2.76s (± 0.50%) 2.74s (± 1.09%) ~ 2.71s 2.78s p=0.516 n=6
Total Time 14.56s (± 0.13%) 16.88s (± 0.44%) 🔻+2.32s (+15.96%) 16.79s 16.97s p=0.005 n=6
angular-1 - node (v18.15.0, x64)
Errors 56 74 🔻+18 (+32.14%) ~ ~ p=0.001 n=6
Symbols 948,670 954,563 +5,893 (+ 0.62%) ~ ~ p=0.001 n=6
Types 410,947 414,299 +3,352 (+ 0.82%) ~ ~ p=0.001 n=6
Memory used 1,224,304k (± 0.00%) 1,236,270k (± 0.00%) +11,966k (+ 0.98%) 1,236,209k 1,236,348k p=0.005 n=6
Parse Time 6.66s (± 0.16%) 6.61s (± 1.08%) ~ 6.52s 6.69s p=0.294 n=6
Bind Time 1.89s (± 0.40%) 1.88s (± 0.29%) ~ 1.88s 1.89s p=0.137 n=6
Check Time 31.93s (± 0.41%) 33.46s (± 0.38%) 🔻+1.53s (+ 4.78%) 33.26s 33.61s p=0.005 n=6
Emit Time 15.25s (± 0.36%) 15.33s (± 0.41%) +0.08s (+ 0.55%) 15.29s 15.46s p=0.045 n=6
Total Time 55.74s (± 0.32%) 57.29s (± 0.32%) +1.55s (+ 2.78%) 56.99s 57.50s p=0.005 n=6
mui-docs - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 2,344,569 2,355,578 +11,009 (+ 0.47%) ~ ~ p=0.001 n=6
Types 845,044 848,437 +3,393 (+ 0.40%) ~ ~ p=0.001 n=6
Memory used 2,119,780k (± 0.01%) 2,113,040k (± 0.01%) -6,740k (- 0.32%) 2,112,874k 2,113,140k p=0.005 n=6
Parse Time 7.39s (± 1.65%) 7.33s (± 0.79%) ~ 7.27s 7.41s p=0.375 n=6
Bind Time 2.34s (± 6.36%) 2.40s (± 3.40%) ~ 2.26s 2.48s p=0.332 n=6
Check Time 72.95s (± 0.47%) 79.98s (± 1.09%) 🔻+7.03s (+ 9.63%) 78.29s 80.85s p=0.005 n=6
Emit Time 0.15s (± 3.52%) 0.15s (± 5.56%) ~ 0.14s 0.16s p=0.929 n=6
Total Time 82.82s (± 0.40%) 89.86s (± 0.96%) 🔻+7.03s (+ 8.49%) 88.19s 90.71s p=0.005 n=6
self-build-src - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,226,697 1,227,367 +670 (+ 0.05%) ~ ~ p=0.001 n=6
Types 266,990 267,827 +837 (+ 0.31%) ~ ~ p=0.001 n=6
Memory used 2,356,784k (± 0.02%) 2,361,801k (± 0.02%) +5,017k (+ 0.21%) 2,361,199k 2,362,432k p=0.005 n=6
Parse Time 5.22s (± 1.04%) 5.21s (± 1.00%) ~ 5.17s 5.28s p=0.936 n=6
Bind Time 1.79s (± 0.77%) 1.79s (± 0.93%) ~ 1.77s 1.81s p=0.675 n=6
Check Time 35.29s (± 0.44%) 38.01s (± 0.53%) 🔻+2.73s (+ 7.72%) 37.79s 38.37s p=0.005 n=6
Emit Time 3.09s (± 4.23%) 2.97s (± 2.28%) ~ 2.91s 3.07s p=0.077 n=6
Total Time 45.40s (± 0.52%) 48.01s (± 0.55%) 🔻+2.61s (+ 5.75%) 47.76s 48.49s p=0.005 n=6
self-build-src-public-api - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,226,697 1,227,367 +670 (+ 0.05%) ~ ~ p=0.001 n=6
Types 266,990 267,827 +837 (+ 0.31%) ~ ~ p=0.001 n=6
Memory used 2,790,829k (±14.22%) 2,943,455k (±11.50%) ~ 2,431,486k 3,160,643k p=0.066 n=6
Parse Time 6.92s (± 1.63%) 7.00s (± 1.03%) ~ 6.89s 7.09s p=0.298 n=6
Bind Time 2.14s (± 1.27%) 2.17s (± 2.54%) ~ 2.11s 2.26s p=0.297 n=6
Check Time 42.75s (± 0.52%) 45.83s (± 0.69%) 🔻+3.08s (+ 7.21%) 45.26s 46.11s p=0.005 n=6
Emit Time 3.54s (± 2.08%) 3.47s (± 1.71%) ~ 3.41s 3.55s p=0.128 n=6
Total Time 55.37s (± 0.50%) 58.47s (± 0.53%) 🔻+3.11s (+ 5.61%) 57.89s 58.75s p=0.005 n=6
self-compiler - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 262,669 262,808 +139 (+ 0.05%) ~ ~ p=0.001 n=6
Types 106,848 106,926 +78 (+ 0.07%) ~ ~ p=0.001 n=6
Memory used 440,416k (± 0.02%) 441,286k (± 0.02%) +870k (+ 0.20%) 441,175k 441,403k p=0.005 n=6
Parse Time 3.54s (± 1.71%) 3.55s (± 1.11%) ~ 3.50s 3.61s p=0.809 n=6
Bind Time 1.31s (± 2.08%) 1.32s (± 1.04%) ~ 1.29s 1.33s p=0.868 n=6
Check Time 18.91s (± 0.37%) 20.49s (± 0.17%) 🔻+1.59s (+ 8.40%) 20.45s 20.54s p=0.005 n=6
Emit Time 1.52s (± 0.90%) 1.53s (± 0.89%) ~ 1.52s 1.55s p=0.113 n=6
Total Time 25.27s (± 0.45%) 26.90s (± 0.07%) 🔻+1.63s (+ 6.43%) 26.88s 26.93s p=0.005 n=6
ts-pre-modules - node (v18.15.0, x64)
Errors 71 71 ~ ~ ~ p=1.000 n=6
Symbols 225,981 225,617 -364 (- 0.16%) ~ ~ p=0.001 n=6
Types 94,356 94,365 +9 (+ 0.01%) ~ ~ p=0.001 n=6
Memory used 371,313k (± 0.04%) 371,645k (± 0.06%) +332k (+ 0.09%) 371,445k 371,925k p=0.031 n=6
Parse Time 2.90s (± 1.64%) 2.88s (± 1.34%) ~ 2.81s 2.91s p=0.126 n=6
Bind Time 1.61s (± 1.14%) 1.59s (± 1.08%) ~ 1.57s 1.62s p=0.056 n=6
Check Time 16.50s (± 0.28%) 17.71s (± 0.46%) 🔻+1.21s (+ 7.31%) 17.59s 17.83s p=0.005 n=6
Emit Time 0.00s (±154.76%) 0.00s ~ ~ ~ p=0.174 n=6
Total Time 21.02s (± 0.36%) 22.18s (± 0.45%) 🔻+1.16s (+ 5.53%) 22.05s 22.31s p=0.005 n=6
vscode - node (v18.15.0, x64)
Errors 7 7 ~ ~ ~ p=1.000 n=6
Symbols 3,277,211 3,260,478 -16,733 (- 0.51%) ~ ~ p=0.001 n=6
Types 1,109,144 1,108,896 -248 (- 0.02%) ~ ~ p=0.001 n=6
Memory used 3,339,238k (± 0.01%) 3,335,469k (± 0.01%) -3,770k (- 0.11%) 3,335,053k 3,335,729k p=0.005 n=6
Parse Time 14.54s (± 0.91%) 14.46s (± 0.56%) ~ 14.34s 14.57s p=0.230 n=6
Bind Time 4.61s (± 0.69%) 4.65s (± 0.74%) ~ 4.63s 4.72s p=0.220 n=6
Check Time 90.01s (± 1.32%) 92.57s (± 2.02%) +2.56s (+ 2.84%) 90.70s 94.80s p=0.020 n=6
Emit Time 29.53s (± 3.15%) 28.95s (± 4.12%) ~ 26.95s 30.69s p=0.936 n=6
Total Time 138.70s (± 1.33%) 140.62s (± 1.03%) ~ 138.84s 142.24s p=0.128 n=6
webpack - node (v18.15.0, x64)
Errors 29 29 ~ ~ ~ p=1.000 n=6
Symbols 295,142 293,741 -1,401 (- 0.47%) ~ ~ p=0.001 n=6
Types 120,554 120,588 +34 (+ 0.03%) ~ ~ p=0.001 n=6
Memory used 449,519k (± 0.02%) 448,322k (± 0.01%) -1,197k (- 0.27%) 448,277k 448,392k p=0.005 n=6
Parse Time 4.09s (± 0.36%) 4.07s (± 0.20%) -0.02s (- 0.45%) 4.06s 4.08s p=0.048 n=6
Bind Time 1.77s (± 1.49%) 1.76s (± 0.86%) ~ 1.74s 1.77s p=0.231 n=6
Check Time 19.12s (± 0.54%) 19.50s (± 0.34%) +0.38s (+ 1.97%) 19.43s 19.61s p=0.005 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 24.98s (± 0.37%) 25.33s (± 0.31%) +0.35s (+ 1.39%) 25.25s 25.47s p=0.005 n=6
xstate-main - node (v18.15.0, x64)
Errors 5 5 ~ ~ ~ p=1.000 n=6
Symbols 557,004 556,446 -558 (- 0.10%) ~ ~ p=0.001 n=6
Types 187,723 188,255 +532 (+ 0.28%) ~ ~ p=0.001 n=6
Memory used 491,191k (± 0.05%) 491,457k (± 0.01%) +266k (+ 0.05%) 491,412k 491,534k p=0.031 n=6
Parse Time 3.36s (± 0.62%) 3.37s (± 0.98%) ~ 3.32s 3.41s p=0.515 n=6
Bind Time 1.19s (± 0.63%) 1.19s (± 0.43%) ~ 1.19s 1.20s p=0.784 n=6
Check Time 19.96s (± 2.47%) 20.13s (± 0.19%) ~ 20.07s 20.17s p=0.065 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 24.52s (± 1.99%) 24.70s (± 0.16%) ~ 24.65s 24.75s p=0.066 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • Compiler-Unions - node (v18.15.0, x64)
  • angular-1 - node (v18.15.0, x64)
  • mui-docs - node (v18.15.0, x64)
  • self-build-src - node (v18.15.0, x64)
  • self-build-src-public-api - node (v18.15.0, x64)
  • self-compiler - node (v18.15.0, x64)
  • ts-pre-modules - node (v18.15.0, x64)
  • vscode - node (v18.15.0, x64)
  • webpack - node (v18.15.0, x64)
  • xstate-main - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6
Developer Information:

Download Benchmarks

typescript-bot avatar Mar 11 '25 15:03 typescript-bot

@jakebailey Here are the results of running the top 400 repos with tsc comparing main and refs/pull/61399/merge:

Something interesting changed - please have a look.

Details

adobe/react-spectrum

10 of 15 projects failed to build with the old tsc and were ignored

packages/@spectrum-icons/illustrations/tsconfig.types.json

Chocobozzz/PeerTube

6 of 13 projects failed to build with the old tsc and were ignored

client/tsconfig.json

CopilotKit/CopilotKit

12 of 37 projects failed to build with the old tsc and were ignored

examples/copilot-form-filling/tsconfig.json

dubinc/dub

5 of 9 projects failed to build with the old tsc and were ignored

packages/utils/tsconfig.json

  • error TS2339: Property 'ids' does not exist on type '{ monthly: number; yearly: number; ids: string[]; } | { monthly: number; yearly: number; } | { monthly: null; yearly: null; }'.

facebook/docusaurus

25 of 42 projects failed to build with the old tsc and were ignored

packages/docusaurus-plugin-rsdoctor/tsconfig.json

heyverse/hey

3 of 12 projects failed to build with the old tsc and were ignored

apps/web/tsconfig.json

hoarder-app/hoarder

1 of 17 projects failed to build with the old tsc and were ignored

apps/web/tsconfig.json

motion-canvas/motion-canvas

13 of 18 projects failed to build with the old tsc and were ignored

packages/core/tsconfig.json

packages/core/tsconfig.build.json

react-navigation/react-navigation

9 of 14 projects failed to build with the old tsc and were ignored

tsconfig.json

example/tsconfig.json

reduxjs/react-redux

1 of 3 projects failed to build with the old tsc and were ignored

tsconfig.json

reduxjs/redux-devtools

26 of 58 projects failed to build with the old tsc and were ignored

extension/tsconfig.json

reduxjs/reselect

typescript_test/tsconfig.json

  • error TS2345: Argument of type '[(state: State, id: number, isCompleted: boolean) => { id: number; completed: boolean; }[], (state: State, id: number) => { id: number; completed: boolean; }, (state: State) => { ...; }[]]' is not assignable to parameter of type '[(state: State) => { id: number; completed: boolean; }[], (state: State, id: number) => { id: number; completed: boolean; }, (state: State, id: number, isCompleted: boolean) => { ...; }[]]'.

type-tests/tsconfig.json

test/tsconfig.json

RSSNext/Follow

3 of 14 projects failed to build with the old tsc and were ignored

apps/ssr/tsconfig.json

TanStack/query

74 of 110 projects failed to build with the old tsc and were ignored

packages/vue-query/tsconfig.prod.json

tusen-ai/naive-ui

3 of 6 projects failed to build with the old tsc and were ignored

src/tsconfig.demo.json

  • error TS2321: Excessive stack depth comparing types 'UnionToTuple<{ [K in T]: TLiteral<K>; }[T], UnionLast<{ [K in T]: TLiteral<K>; }[T]>>' and 'TSchema[]'.
    • file:///mnt/ts_downloads/_/m/naive-ui/node_modules/@sinclair/typebox/typebox.d.ts#L137 in src/tsconfig.demo.json
    • file:///mnt/ts_downloads/_/m/naive-ui/node_modules/@sinclair/typebox/typebox.d.ts#L145 in src/tsconfig.demo.json
  • error TS2321: Excessive stack depth comparing types 'UnionToTuple<{ [K in S]: TLiteral<K>; }[S], UnionLast<{ [K in S]: TLiteral<K>; }[S]>>' and 'TLiteral<TLiteralValue>[]'.
    • file:///mnt/ts_downloads/_/m/naive-ui/node_modules/@sinclair/typebox/typebox.d.ts#L380 in src/tsconfig.demo.json

typescript-bot avatar Mar 11 '25 16:03 typescript-bot

I know this is draft etc. I'm just wondering that is it intended that some NodeList changed to HTMLCollection and such? :) Or is due of something similar as #59729 ?

rubiesonthesky avatar Mar 14 '25 12:03 rubiesonthesky

Yes, it's like that issue. Union order unfortunately matters in a couple of places, which is why I'm sending this at all!

jakebailey avatar Mar 14 '25 14:03 jakebailey

Is this likely to help with issues like #53614?

controversial avatar Mar 14 '25 15:03 controversial

Yes, I think so. Part of the Go port is that we need to make our code even more resilient to ordering changes, since we are now running multiple checkers at once.

jakebailey avatar Mar 14 '25 15:03 jakebailey

Closing; if I want to retest this I'll repick from the tsgo-port branch with both sorting changes.

jakebailey avatar Jul 01 '25 19:07 jakebailey