【发布时间】:2021-08-11 01:59:00
【问题描述】:
我试图在我的简单项目中使用 Enum。但出于某种原因,我不喜欢我调用枚举值的方式。示例在这里;我正在尝试创建我的自定义管道。
import { BadRequestException, PipeTransform } from '@nestjs/common';
import { TaskStatus } from '../task.model';
export class TaskStatusValidationPipe implements PipeTransform {
readonly allowedStatus = [
TaskStatus.OPEN,
TaskStatus.IN_PROGRESS,
TaskStatus.DONE,
];
transform(value: any) {
value = value.toUpperCase();
if (!this.isStatusValid(value)) {
throw new BadRequestException(`'${value}' is not valid status`);
}
return value;
}
private isStatusValid(status: any) {
const idx = this.allowedStatus.indexOf(status);
console.log(idx);
return idx !== -1;
}
}
我不喜欢那部分:
export class TaskStatusValidationPipe implements PipeTransform { readonly allowedStatus = [ TaskStatus.OPEN, TaskStatus.IN_PROGRESS, TaskStatus.DONE, ];
有任何合乎逻辑的方法可以将我的有效状态分配到 allowedStatus 的数组中,但方法很简单,而不是从 TaskStatus 调用每个状态(例如,TaskStatus.OPEN强>...)?因为;对于大型项目,我可能在 TaskStatus 中有很多有效状态(例如“OPEN”、“DONE”、“DECLINED”...等)。
另外,它是 TaskStatus 枚举:
export enum TaskStatus {
OPEN = 'OPEN',
IN_PROGRESS = 'IN_PROGRESS',
DONE = 'DONE',
}
谢谢,
【问题讨论】:
-
我假设传入的
value应该是一个有效的枚举状态,对吗?'OPEN'、'IN_PROGRESS'、'DONE'等? -
是的,实际上我正在尝试更新某些对象的状态,所以我需要检查新状态是否有效?有效状态在我的枚举中,其中 TaskStatus。
标签: typescript enums nestjs