[NewErrors] 4.8.0-dev.20220609 vs 4.7.3
The following errors were reported by 4.8.0-dev.20220609, but not by 4.7.3
kamranahmedse/developer-roadmap
tsconfig.json
-
error TS2344: Type 'K' does not satisfy the constraint 'Record<string, any>'.- file:///mnt/ts_downloads/developer-roadmap/node_modules/@chakra-ui/descendant/src/use-descendant.ts#L11
- file:///mnt/ts_downloads/developer-roadmap/node_modules/@chakra-ui/descendant/src/use-descendant.ts#L87
- file:///mnt/ts_downloads/developer-roadmap/node_modules/@chakra-ui/descendant/src/use-descendant.ts#L91
coder/code-server
7 of 57 projects failed to build with the old tsc
src/tsconfig.monaco.json
-
error TS2322: Type '(_target: T, propKey: PropertyKey) => unknown' is not assignable to type '(target: object, p: string | symbol, receiver: any) => any'.
src/tsconfig.tsec.json
-
error TS2322: Type '(_target: T, propKey: PropertyKey) => unknown' is not assignable to type '(target: object, p: string | symbol, receiver: any) => any'. -
error TS2322: Type 'T' is not assignable to type 'RemoteServiceStub<T>'. -
error TS2409: Return type of constructor signature must be assignable to the instance type of the class.
microsoft/playwright
4 of 9 projects failed to build with the old tsc
packages/html-reporter/tsconfig.json
-
error TS2344: Type 'T' does not satisfy the constraint 'Channel'.
vercel/hyper
2 of 3 projects failed to build with the old tsc
tsconfig.json
-
error TS2344: Type 'BaseType' does not satisfy the constraint 'Record<string | number, any>'.- file:///mnt/ts_downloads/hyper/app/node_modules/type-fest/ts41/get.d.ts#L93 in app/tsconfig.json
- file:///mnt/ts_downloads/hyper/app/node_modules/type-fest/ts41/get.d.ts#L94 in app/tsconfig.json
-
error TS2344: Type 'T' does not satisfy the constraint 'Record<string, any>'.- file:///mnt/ts_downloads/hyper/app/node_modules/conf/dist/source/types.d.ts#L201 in app/tsconfig.json
react-hook-form/react-hook-form
2 of 3 projects failed to build with the old tsc
tsconfig.json
-
error TS2344: Type 'TFieldValues' does not satisfy the constraint 'FieldValues'.- src/tests/controller.test.tsx#L21
- src/logic/getResolverOptions.ts#L27
- src/types/fieldArray.ts#L99
- src/types/fieldArray.ts#L99
- src/types/fieldArray.ts#L102
- src/types/fieldArray.ts#L103
- src/types/fieldArray.ts#L130
- src/types/fieldArray.ts#L130
- src/types/fieldArray.ts#L133
- src/types/fieldArray.ts#L134
- src/types/fieldArray.ts#L183
- src/types/fieldArray.ts#L183
- src/types/fieldArray.ts#L187
- src/types/fieldArray.ts#L188
- src/types/fieldArray.ts#L214
- src/types/fieldArray.ts#L214
- src/types/fieldArray.ts#L217
- src/types/fieldArray.ts#L240
- src/types/fieldArray.ts#L240
- src/types/fieldArray.ts#L243
- src/types/fieldArray.ts#L244
- src/types/form.ts#L117
- src/types/form.ts#L121
- src/types/form.ts#L125
- src/types/form.ts#L140
- src/types/form.ts#L706
- src/types/form.ts#L706
- src/types/form.ts#L710
- src/types/form.ts#L757
- src/types/form.ts#L785
- src/types/form.ts#L788
- src/types/form.ts#L789
- src/types/form.ts#L790
- src/types/resolvers.ts#L22
- src/useWatch.ts#L147
-
error TS2344: Type 'T' does not satisfy the constraint 'FieldValues'. -
error TS2322: Type 'Control<T, any>' is not assignable to type 'Control<FieldValues, any>'. -
error TS2345: Argument of type 'U' is not assignable to parameter of type 'Partial<{ shouldValidate: boolean; shouldDirty: boolean; shouldTouch: boolean; }> | undefined'. -
error TS2533: Object is possibly 'null' or 'undefined'.
typeorm/typeorm
tsconfig.json
-
error TS2344: Type 'Entity' does not satisfy the constraint 'ObjectLiteral'. -
error TS2345: Argument of type 'DeepPartial<Entity>' is not assignable to parameter of type 'ObjectLiteral'. -
error TS2345: Argument of type 'T | T[]' is not assignable to parameter of type 'ObjectLiteral | ObjectLiteral[]'. -
error TS2345: Argument of type 'Entity | Entity[]' is not assignable to parameter of type 'ObjectLiteral | ObjectLiteral[]'. -
error TS2345: Argument of type 'EntityTarget<Entity>' is not assignable to parameter of type 'EntityTarget<ObjectLiteral>'. -
error TS2322: Type 'MongoRepository<ObjectLiteral>' is not assignable to type 'Repository<Entity>'. -
error TS2345: Argument of type 'Entity[]' is not assignable to parameter of type 'ObjectLiteral[]'. -
error TS2345: Argument of type 'E1 | E1[]' is not assignable to parameter of type 'ObjectLiteral | ObjectLiteral[]'. -
error TS2345: Argument of type 'Entity' is not assignable to parameter of type 'ObjectLiteral | undefined'. -
error TS2322: Type 'Entity[]' is not assignable to type 'ObjectLiteral[]'. -
error TS2345: Argument of type 'T' is not assignable to parameter of type 'ObjectLiteral'. -
error TS2344: Type 'T' does not satisfy the constraint 'ObjectLiteral'. -
error TS2345: Argument of type 'Entity' is not assignable to parameter of type 'ObjectLiteral'. -
error TS2769: No overload matches this call. -
error TS2322: Type 'Repository<ObjectLiteral>' is not assignable to type 'Repository<T>'.
mobxjs/mobx
7 of 9 projects failed to build with the old tsc
packages/mobx/tsconfig.json
-
error TS2322: Type 'IIsObservableObject & Object' is not assignable to type 'T'. -
error TS2345: Argument of type 'T' is not assignable to parameter of type 'Object'.
palantir/blueprint
11 of 25 projects failed to build with the old tsc
packages/datetime/src/tsconfig.json
-
error TS2339: Property 'className' does not exist on type '{}'. -
error TS2339: Property 'popoverClassName' does not exist on type '{}'. -
error TS2339: Property 'onClose' does not exist on type '{}'.
packages/select/src/tsconfig.json
-
error TS2339: Property 'fill' does not exist on type '{}'. -
error TS2339: Property 'inputProps' does not exist on type '{}'. -
error TS2339: Property 'className' does not exist on type '{}'. -
error TS2339: Property 'popoverClassName' does not exist on type '{}'. -
error TS2339: Property 'modifiers' does not exist on type '{}'. -
error TS7006: Parameter 'data' implicitly has an 'any' type. -
error TS2339: Property 'usePortal' does not exist on type '{}'. -
error TS2339: Property 'wrapperTagName' does not exist on type '{}'.
apollographql/apollo-client
tsconfig.json
-
error TS2345: Argument of type '{ store: EntityStore; rootId: string; config: InMemoryCacheConfig; previousResult?: any; optimistic: boolean; returnPartialData?: boolean | undefined; canonizeResults?: boolean | undefined; query: DocumentNode | TypedDocumentNode<...>; variables?: TVariables | undefined; id?: string | undefined; }' is not assignable to parameter of type 'DiffQueryAgainstStoreOptions'. -
error TS2345: Argument of type 'SubscriptionOptions<TVariables, T>' is not assignable to parameter of type 'SubscriptionOptions<OperationVariables, any>'. -
error TS2322: Type 'TSubscriptionVariables | undefined' is not assignable to type 'OperationVariables | undefined'. -
error TS2345: Argument of type 'TVariables' is not assignable to parameter of type 'OperationVariables | undefined'. -
error TS2345: Argument of type 'TVariables | undefined' is not assignable to parameter of type 'OperationVariables | undefined'. -
error TS2322: Type 'ObservableQuery<T, TVariables>' is not assignable to type 'ObservableQuery<any, OperationVariables>'. -
error TS2322: Type 'TVariables | undefined' is not assignable to type 'Record<string, any> | undefined'. -
error TS2345: Argument of type 'TVars | undefined' is not assignable to parameter of type 'OperationVariables | undefined'. -
error TS2345: Argument of type 'Pick<WatchQueryOptions<TVars, TData>, "variables" | "context" | "fetchPolicy" | "errorPolicy">' is not assignable to parameter of type 'Pick<WatchQueryOptions<OperationVariables, any>, "variables" | "fetchPolicy" | "errorPolicy">'. -
error TS2345: Argument of type 'TVars | (undefined & TVars)' is not assignable to parameter of type 'OperationVariables | undefined'. -
error TS2345: Argument of type '(variables: TVars) => ConcastSourcesIterable<ApolloQueryResult<TData>>' is not assignable to parameter of type '(value: { [x: string]: any; }) => ConcastSourcesIterable<ApolloQueryResult<TData>> | PromiseLike<ConcastSourcesIterable<ApolloQueryResult<TData>>>'. -
error TS2345: Argument of type 'WatchQueryOptions<TVars, TData>' is not assignable to parameter of type 'WatchQueryOptions<OperationVariables, any>'. -
error TS2322: Type 'TVars | undefined' is not assignable to type 'Record<string, any> | undefined'. -
error TS2345: Argument of type 'TVars | undefined' is not assignable to parameter of type 'Record<string, any> | undefined'. -
error TS2345: Argument of type 'OperationOption<TProps, TData, TGraphQLVariables, TChildProps, DefaultContext, ApolloCache<any>>' is not assignable to parameter of type 'OperationOption<TProps, Record<string, any>, TGraphQLVariables, TChildProps, DefaultContext, ApolloCache<any>>'. -
error TS2322: Type '(mutate: MutationFunction<TData, TGraphQLVariables>, { data, ...r }: MutationResult<TData>) => JSX.Element' is not assignable to type '(mutateFunction: MutationFunction<any, OperationVariables, DefaultContext, ApolloCache<any>>, result: MutationResult<...>) => Element | null'. -
error TS2322: Type 'TProps & TChildProps' is not assignable to type 'IntrinsicAttributes & TProps & TChildProps & { children?: ReactNode; }'. -
error TS2322: Type 'TChildProps' is not assignable to type '{ [x: string]: any; }'. -
error TS2769: No overload matches this call. -
error TS2345: Argument of type 'TRelayEdge<TNode>' is not assignable to parameter of type 'Reference | StoreObject | undefined'.
Common issue is something like
export interface Obj {
[key: string]: any
}
function foo<T>(x: T) {
let y: Obj = x;
}
@typescript-bot bisect good v4.7.3 bad main
The change between v4.7.3 and main occurred at 5aa0053c74f0c67b2cbedf9cee6607ead3b9dc45.
It’s nonsense because I didn’t add // @strictNullChecks: true to the repro. But I wonder what change it thinks it picked up on, hah
@DanielRosenwasser I'm pretty sure that comes from #49119 (which incorporated the change from #48366). When checking whether an unconstrained type parameter T is assignable to some type X, we used to check whether {} is assignable to X. We now check whether unknown is assignable to X, and in this case it isn't because T could be undefined or null. This seems like a very legit error.
:wave: Hi, I'm the Repro bot. I can help narrow down and track compiler bugs across releases! This comment reflects the current state of this repro running against the nightly TypeScript.
Comment by @DanielRosenwasser
:x: Failed: -
Type 'T' is not assignable to type 'Obj'.
Historical Information
| Version | Reproduction Outputs |
|---|---|
| 4.3.2, 4.4.2, 4.5.2, 4.6.2, 4.7.2 |
:+1: Compiled |
Is there any plan to resolve https://github.com/typeorm/typeorm/issues/9331? This is a very extensively used dependency and it doesn't seem like a straightforward change to fix the issue. Is it possible the following TS change can be reverted?
As metioned in TS 4.8 release notes linked above, T is no longer assignable to {} so it's no longer valid in ts 4.8.X because T no longer constraints ObjectLiteral.
I fixed all the typeorm errors when the change first landed, and it was very straightforward: https://github.com/typeorm/typeorm/pull/9106. I guess new changes to typeorm were introduced in the meantime. They should be able to follow the same pattern and fix the new ones. I can try to send a follow-up PR tomorrow if they don’t get to it first. But no, the TS change will definitely not be reverted. The error is accurate and protects against real unsafe calls.