在更新到VSCode August 2019 (version 1.38) and 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
}
}
如何忽略或修复它们?
我还注意到,如果删除打字: Repository<MyEntity>
同一行上也有"Excessive stack depth comparing types 'FindConditions<?>' and 'FindConditions<?>'
错误。
答案 0 :(得分:1)
更新(2019年9月23日):
此问题似乎已在Typescript版本3.6.3中得到解决。
来源:https://github.com/typeorm/typeorm/issues/3194#issuecomment-529911310
答案 1 :(得分:-1)
这可以通过使用以前版本的Typescript来解决。
首先请确保工作区“ npm”上的打字稿版本低于3.6
。例如:package.json
:
"dependencies": {
...
"typescript": "^3.0.3"
}
如果您的工作空间具有3.6.x
或更高版本,请安装以前的版本,键入npm install typescript@3.4.3
然后打开.ts
文件,一个打字稿版本选择器将出现在状态栏上。 (版本^3.6.x
可能正在显示)
然后选择“使用工作区版本” ,而不是“ VS Code的版本”
请确保工作空间版本也低于3.6.x
,例如我的工作空间上的版本3.4.3
。否则强制安装先前提到的先前版本
现在选择了版本^3.4.x
,在VS Code和tsc
命令上都不会出现这种错误。
注意:由于工作区Typescript版本与TypeORM兼容,因此运行npm run build
之类的脚本不应引发任何错误,因为它将使用Typescript工作区二进制文件。该错误只会在VS Code或终端上的直接tsc
命令上出现
答案 2 :(得分:-1)
虽然使用较早版本的打字稿可以完成这项工作,但您也可以按照here的说明,在skipLibCheck: true
文件中添加tsconfig.json
条目
{
"compilerOptions": {
...
"skipLibCheck": true,
...
}
}