Skip to content

Conversation

weswigham
Copy link
Member

A revised version of #33570 that, per the request at the last design meeting, only removes the rule under strictNullChecks.

Note that this does not really fix #32330 like #33570 does, because the original report does not include anything about strict mode, nor is the observed behavioral issue limited to strict mode.

@typescript-bot typescript-bot added Author: Team For Milestone Bug PRs that fix a bug with a specific milestone labels Mar 21, 2022
@weswigham weswigham merged commit 8cd4b7a into microsoft:main Mar 23, 2022
@andrewbranch andrewbranch added the Breaking Change Would introduce errors in existing code label Mar 25, 2022
glasser added a commit to apollographql/apollo-server that referenced this pull request Apr 11, 2022
Two things got a bit mixed together here.

One is that we want the Disabled plugins to all be defined directly in
plugin/index.ts, so that loading ApolloServerPluginInlineTraceDisabled
does not spend time loading the protobuf library.

The other thing is that we started thinking a bit more carefully about
plugin context generics. We wrote some tests to make sure that you can
use an `ApolloServerPlugin<BaseContext>` (ie, a plugin that doesn't need
any particular fields on the context) with any `ApolloServer`, but not
vice versa. As part of getting this to work, we added another
`__forceTContextToBeContravariant`. We also noticed that it made more
sense for BaseContext to be `{}` ("an object with no particular fields")
rather than `Record<string, any>` ("an object where you can do anything
with any of its fields").

We investigated whether the new contravariance annotation coming in the
next two months in TS 4.7
(microsoft/TypeScript#48240) would allow us to
get rid of the `__forceTContextToBeContravariant` hack and the answer is
yes! However, trying `4.7.0-beta` failed for two other reasons. One is
that microsoft/TypeScript#48366 required us to
add some missing `extends` clauses, which we are doing now in this PR.
The other is that `graphql-tools` needs some fixes to work with TS4.7
which we hope they can do soon
(ardatan/graphql-tools#4381).
@HolgerJeromin
Copy link
Contributor

Found Object.assign(undefined, {}); in my code. Thanks! :-)

RyanCavanaugh added a commit to RyanCavanaugh/TypeScript that referenced this pull request May 26, 2022
…pply under strictNullChecks (microsoft#48366)

* Make the unconstrained type parameter and {} assignability rule not apply under strictNullChecks

* Fix lint, PR feedback
# Conflicts:
#	src/compiler/checker.ts
#	tests/baselines/reference/unknownType1.errors.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Author: Team Breaking Change Would introduce errors in existing code For Milestone Bug PRs that fix a bug with a specific milestone
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Generic bounds not enforced on generic argument
5 participants