错误:类型“{}”上不存在属性“objectId”
复制步骤:
将NODE_ENV环境变量设置为'production'。构建NestJS应用程序。触发下面提到的代码段。代码段:
const mapObject = new Map()
const employee = mapObject.get("keyName");
if (!employee) {
throw new ServerException({
});
}
const objectId = employee.objectId;
预期行为:构建过程应该成功完成,没有任何错误,即使NODE_ENV环境变量设置为“production”。
实际行为:当NODE_ENV环境变量设置为'production'时,构建将引发以下错误:“类型“{}”上不存在属性“objectId”。”
其他信息:
在开发环境中不会出现此问题。尝试访问从“mapObject”Map检索的“employee”对象的“objectId”属性时出错。
节点版本:-18.16
包版本“@nestjs/common”:“^9.0.0”,“@nestjs/config”:“^2.2.0”,“@nestjs/core”:“^9.0.0”,“@nestjs/cli”:“^9.0.0”,
1条答案
按热度按时间flvlnr441#
你的问题出现了,因为当你从map中获取employee对象时,TypeScript无法推断出它的类型。TypeScript对对象属性访问是严格的,所以如果对象的类型没有明确定义,访问它的属性可能会导致错误。
您应该为员工类型定义一个接口:
然后在从Map中获取员工时使用此接口:
这告诉TypeScript employee是Employee类型,并且它有一个属性objectId。如果你不知道employee对象的确切形状,但你确定一些属性,你可以使用Partial:
请记住,在尝试访问objectId之前,要检查employee是否未定义,以防止运行时错误。