特征: 简单的区分方法
import { applyDecorators } from '@nestjs/common'; import { ApiExtraModels, ApiProperty, getSchemaPath } from '@nestjs/swagger'; import { Type, type ClassConstructor } from 'class-Transformer'; import { IsIn, IsNotEmpty, IsObject, ValidateNested } from 'class-validator';
// eslint-disable-next-line @TypeScript-eslint/explicit-function-return-type export function createDiscriminationDecorators<BaseClass extends object, T extends { cls: ClassConstructor; value: DiscriminatorValue; }, Discriminator extends keyof InstanceType<T['cls']> & string, DiscriminatorValue extends InstanceType<T['cls']>[Discriminator]>( subClasses: readonly T[], discriminator: Discriminator ) { class Base { @IsIn(subClasses.map((subClass) => subClass.value)) [discriminator]: DiscriminatorValue; }
const type : { keepDiscriminatorProperty: boolean; discriminator: { property: Discriminator; subTypes: { value: ClassConstructor; name: any; }[]; }; } = { …
内容来源: typestack/class-transformer