網站搜尋

typescript - TypeORM 在 Repository 類型上拋出「類型實例化過深且可能無限.ts(2589)」錯誤


在更新到 VSCode 2019 年 8 月版(版本 1.38)和 TypeScript 3.6 之後,我在 TypeORM 儲存庫初始化時遇到了很多 Type instantiation is excessively deep and possibly infinite.ts(2589) 錯誤。

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
    }
}

我該如何忽略或修復它們?

  • VSCode v1.38.0(使用者安裝版)
  • Node.js v10.11.0
  • TypeScript v3.4.5
  • TypeORM v0.2.18

我也注意到,如果移除類型 : Repository<MyEntity>,錯誤就會消失

在同一行也有 "比較類型 ''FindConditions<?>'' 和 ''FindConditions<?>'' 時堆疊深度過深" 的錯誤。

答案#1

更新(2019年9月23日):

這個問題似乎已在 Typescript 版本 3.6.3 中得到修復。

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

答案#2

雖然使用舊版本的 TypeScript 也能完成工作,但你也可以在你的 tsconfig.json 文件中添加 skipLibCheck: true 項,如此處所述

{
  "compilerOptions": {
    ...
    "skipLibCheck": true,
    ...
  }
}