这是最佳做法吗?检查变量是否已定义或分配 null

Is this best practice? Checking if variable defined or assign null

const pictureEntity = updateUserDto?.picture

  ? await this.filesService.find(updateUserDto.picture)

  : null;

if (pictureEntity) {

  const pictureEntity.url = await this.filesService.getFileUrl(pictureEntity);

}

这是给 pictureEntity 赋值的正确方法吗?基本上,如果未定义 属性 图片,我不应该使用 filesService 中的查找服务,因为如果 属性 图片为空或未定义,typeORM 将 return 它找到的第一个值。

我是这样做的:

if (updateUserDto?.picture) {
  const pictureEntity = await this.filesService.find(updateUserDto.picture);
}

但是 TS 会抱怨,因为我在 If 中声明了一个变量。

如果你只想在 updateUserDto?.picture 设置时将 pictureEntity 设置为一个值,你最初的尝试几乎是正确的,但你只需要在 if 之外定义变量在像这样设置值之前阻塞

let pictureEntity;
if (updateUserDto?.picture) {
  pictureEntity = await this.filesService.find(updateUserDto.picture);
}

请注意,您需要使用 let 而不是 const,因为您现在要在创建后分配给变量。另请注意,如果 updateUserDto?.picture 为假

,则 pictureEntity 的默认值为 undefined

你可以这样做:

const pictureEntity = updateUserDto?.picture && await this.filesService.find(updateUserDto.picture);

如果 updateUserDtonullundefinedpictureEntity 将是 undefined。否则它将await你的另一个承诺。

编辑:

这里也不需要 const:

if (pictureEntity) {

  const pictureEntity.url = await this.filesService.getFileUrl(pictureEntity);

}

您没有使用 const 创建对象属性。