TypeORM throws "Type instantiation is excessively deep and possibly infinite.ts(2589)" error on Repository typing

4.8k views Asked by At

After update to VSCode August 2019 (version 1.38) and Typescript 3.6 i'm getting a lot of Type instantiation is excessively deep and possibly infinite.ts(2589) on TypeORM repository initialization.

import { Connection, Repository, Entity, BaseEntity,  createConnection } from 'typeorm';

@Entity()
class MyEntity extends BaseEntity {
    public id: number;
}

class Test {
    async test() {
        const connection: Connection = await createConnection();
        const myRepo: Repository<MyEntity> = connection.getRepository(MyEntity); // only here cast the error above
    }
}

How can I ignore or fix them?

  • VSCode v1.38.0 (user setup)
  • Node.js v10.11.0
  • Typescript v3.4.5
  • TypeORM v0.2.18

I also noticed that the error is gone if the typing is removed : Repository<MyEntity>

There also is the "Excessive stack depth comparing types 'FindConditions<?>' and 'FindConditions<?>' error on the same line.

3

There are 3 answers

0
Daniel Santos On BEST ANSWER

This can be solved it by using a previous version of Typescript.

First be sure that the typescript version on your workspace "npm" is lower than 3.6. For instance: package.json:

"dependencies": {
    ...
    "typescript": "^3.0.3"
}

If your workspace have 3.6.x or greater, install a previous version typing npm install [email protected]

Then, with a .ts file opened, a typescript version selector will appear on status bar. (version ^3.6.x probably being displayed)

enter image description here

then choose "Use Workspace Version" instead of "VS Code's Version"

enter image description here

Be sure that workspace version is also lower than 3.6.x ex here version 3.4.3 is on my workspace. Or else force install a previous version as previouly mentioned

enter image description here

Now that version ^3.4.x is selected, you should not have this kind of error on VS Code nor tsc commands.

Note: Since workspace Typescript version is compatible with TypeORM, running scripts like npm run build should not throw any errors cause it will use Typescript workspace binaries. The errors will only occurs on VS Code or direct tsc commands on terminal

0
Orkhan Alikhanov On

While using older version of typescript does the job, you can also add skipLibCheck: true entry in your tsconfig.json file as stated here

{
  "compilerOptions": {
    ...
    "skipLibCheck": true,
    ...
  }
}
1
Alex Mantaut On

Update (23 September 2019):

This issue seems to have been fixed in Typescript version 3.6.3.

Source: https://github.com/typeorm/typeorm/issues/3194#issuecomment-529911310