标题说明了一切。我不明白 this.authService 在构造函数中的 this.authService = new AuthService() 之后如何可能未定义(或非常接近的东西)。基类使用 GenericApiService 的基类 - 为什么我必须在赋值之前使用 const 并传递给 super 。
export class AuthController extends CrudController<any> {
authService: AuthService;
constructor(app: Express) {
const authService = new AuthService(database.db!);
super('auth', app, authService);
this.authService = authService;
}
registerUser(req: Request, res: Response, next: NextFunction) {
// TS2532: Object is possibly undefined
this.authService.createUser(orgId, req.body)
.then((doc) => {
return res.status(201).json(doc);
})
}
将代码分解到最小量以重现问题后,我发现问题出在 authService 的“createUser”方法中,而不是我上面发布的控制器代码。我以为我在 createUser 中有一个工作函数,但我没有声明返回类型。它默认的返回类型为
Promise<never>
我不熟悉。声明返回类型后
Promise<User | void>
问题消失了。
如果将来有人被类似的事情难住了。拆掉您正在调用的函数并大幅简化它 - 也许您的返回类型不好。