Rad*_*tem 13 typescript class-validator
我有这种类型:
export type BranchOperatorRole = 'none' | 'seller' | 'operator' | 'administrator';
Run Code Online (Sandbox Code Playgroud)
我可以使用哪个类验证器装饰器来验证属性是否具有这些值之一?
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;
}
Run Code Online (Sandbox Code Playgroud)
Yev*_*nii 12
您无法按类型进行验证,因为类型在运行时消失。您可以创建枚举并使用IsEnum装饰器进行验证。例子
在你的情况下尝试这样的事情:
export enum BranchOperatorRoleEnum = {
none=1,
seller=2,
// other
}
class AddBranchOperatorRequest {
@IsEnum(BranchOperatorRoleEnum)
role: BranchOperatorRole;
}
Run Code Online (Sandbox Code Playgroud)
或者甚至用数组代替枚举
export type BranchOperatorRole = 'none' | 'seller' | 'operator' | 'administrator';
export const BranchOperatorRoles: BranchOperatorRole[] = [
'none',
'seller',
// other
]
class AddBranchOperatorRequest {
@IsEnum(BranchOperatorRoles)
role: BranchOperatorRole;
}
Run Code Online (Sandbox Code Playgroud)
小智 12
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19148 次 |
| 最近记录: |