当我在NestJs中使用InjectRepository装饰器时,突然得到一个类型错误。这个错误在每个服务中都发生。
constructor(
private userRepository: UserRepository,
@InjectRepository(Workout) <--- Error
private workoutRepository: Repository<Workout>,
) {}
{
"compilerOptions": {
"module": "CommonJS",
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "es2017",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./",
"incremental": true,
"skipLibCheck": true,
"strictNullChecks": true,
"noImplicitAny": true,
"strictBindCallApply": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"resolveJsonModule": true
}
}
我得到以下错误:作为表达式调用时,无法解析参数装饰器的签名。“undefined”类型的参数无法分配给“string”类型的参数|symbol'.ts(1239)
我真的不知道为什么会出现这种情况。
1条答案
按热度按时间bttbmeg01#
我在使用
@Inject(forwardRef(() => Class))
时遇到了这个lint错误。它可以通过将
@nestjs/common
更新为v9.3.0
来解决。显然,这是TypeScript v5引入的一个问题。“[它]对装饰器类型检查引入了一些收紧。”1
Inject
如何工作:如您所见,
Inject
需要第二个参数,该参数可以是symbol
或string
。NestJS v9.3.0在这个合并的PR下解决了这个问题:Constructor parameter decorators should allow undefined as the type of key #10959