这是最佳做法吗?检查变量是否已定义或分配 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);
如果 updateUserDto
是 null
或 undefined
,pictureEntity
将是 undefined
。否则它将await
你的另一个承诺。
编辑:
这里也不需要 const
:
if (pictureEntity) {
const pictureEntity.url = await this.filesService.getFileUrl(pictureEntity);
}
您没有使用 const
创建对象属性。
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);
如果 updateUserDto
是 null
或 undefined
,pictureEntity
将是 undefined
。否则它将await
你的另一个承诺。
编辑:
这里也不需要 const
:
if (pictureEntity) {
const pictureEntity.url = await this.filesService.getFileUrl(pictureEntity);
}
您没有使用 const
创建对象属性。