Closed
Description
The following errors were reported by 4.3.0-dev.20210228, but not by 4.2.2
cdr/code-server
9 of 47 projects failed to build with the old tsc
lib/vscode/extensions/html-language-features/server/tsconfig.json
error TS2367: This condition will always return 'true' since the types 'Promise<import("/mnt/ts_downloads/code-server/lib/vscode/extensions/node_modules/typescript/lib/typescript").LanguageService>' and 'false' have no overlap.
lib/vscode/extensions/typescript-language-features/tsconfig.json
error TS2367: This condition will always return 'true' since the types 'Promise<import("/mnt/ts_downloads/code-server/lib/vscode/extensions/typescript-language-features/src/typescriptService").ServerResponse.Response<protocol.Response>>' and 'false' have no overlap.
ReactiveX/rxjs
7 of 11 projects failed to build with the old tsc
src/tsconfig.cjs.spec.json
error TS2769: No overload matches this call.
src/tsconfig.esm5.rollup.json
error TS2769: No overload matches this call.
typeorm/typeorm
tsconfig.json
error TS2367: This condition will always return 'true' since the types 'Promise<any>' and 'false' have no overlap.
reduxjs/redux-devtools
17 of 51 projects failed to build with the old tsc
packages/redux-devtools/tsconfig.json
error TS2322: Type 'MonitorProps' is not assignable to type 'IntrinsicAttributes & Omit<any, "monitorState" | "nextActionId" | "actionsById" | "stagedActionIds" | "skippedActionIds" | "committedState" | "currentStateIndex" | "computedStates" | "isLocked" | "isPaused" | "dispatch">'.
error TS2322: Type 'MonitorProps & { store: LiftedStore<S, A, MonitorState>; }' is not assignable to type 'IntrinsicAttributes & Omit<any, "monitorState" | "nextActionId" | "actionsById" | "stagedActionIds" | "skippedActionIds" | "committedState" | "currentStateIndex" | "computedStates" | "isLocked" | "isPaused" | "dispatch">'.
Metadata
Metadata
Assignees
Labels
Type
Projects
Relationships
Development
No branches or pull requests
Activity
DanielRosenwasser commentedon Mar 1, 2021
I think the Redux changes might have been caused by #42819. I think the hint for me is the
Omit<any, ...>
. (@weswigham)The new "sufficiently overlaps" error is very confusing, but is expected fallout from #25330. I really wish we had discussed this at a design meeting since it's a potentially disruptive breaking change. In some of the examples above, we're seeing undesirable behavior due to
strictPropertyInitialization
being off. I guess testing athis.func
and not calling it is always suspicious regardless ofstrictPropertyInitialization
, so maybe that's why we never hit a similar issue with uncalled function checks. (@elibarzilay, @RyanCavanaugh)weswigham commentedon Mar 2, 2021
@DanielRosenwasser I've tracked down the change that broke
redux-devtools
, and it's not that one; it's df5ffc0 .Omit<any, Whatever>
is just an alias for{[index:string]: any; [index:number]: any}
; the comparison in the error apparently only worked by virtue of thenumber
index signature assignability rule that got removed.MonitorProps
doesn't have an index signature, so it fails now.RyanCavanaugh commentedon Mar 3, 2021
@DanielRosenwasser Wes and I spoke and recommend that we keep the assignability-target rule in place when the target has both string and numeric index signatures
DanielRosenwasser commentedon Mar 3, 2021
Thanks for investigating! Let me look into it quickly.