我有这样的类型:
export type BranchOperatorRole = 'none' | 'seller' | 'operator' | 'administrator';使用哪个类验证器装饰器,我可以验证属性是否具有这些值之一?
import { IsEmail, IsString, Contains } from "class-validator";
export type BranchOperatorRole = 'none' | 'seller' | 'operator' | 'administrator';
export class AddBranchOperatorRequest extends User {
@IsEmail()
email: string;
@Contains(BranchOperatorRole )
role: BranchOperatorRole;
}发布于 2020-05-25 22:35:16
你不能按类型验证,因为类型在运行时消失了。您可以创建枚举并使用IsEnum装饰器进行验证。Example
在您的示例中,尝试如下所示:
export enum BranchOperatorRoleEnum = {
none=1,
seller=2,
// other
}
class AddBranchOperatorRequest {
@IsEnum(BranchOperatorRoleEnum)
role: BranchOperatorRole;
}甚至使用数组而不是枚举
export type BranchOperatorRole = 'none' | 'seller' | 'operator' | 'administrator';
export const BranchOperatorRoles: BranchOperatorRole[] = [
'none',
'seller',
// other
]
class AddBranchOperatorRequest {
@IsEnum(BranchOperatorRoles)
role: BranchOperatorRole;
}发布于 2021-08-16 09:39:06
const roles = ['none', 'seller', 'operator', 'administrator'] as const;
export type BranchOperatorRole = typeof roles[number];
export class AddBranchOperatorRequest extends User {
@IsEmail()
email: string;
@IsIn(roles)
role: BranchOperatorRole;
}https://stackoverflow.com/questions/61979394
复制相似问题