特征: 简单的区分方法

作者: DarioVisiert创建于 2025年8月20日更新于 2025年8月21日
标签type: featureflag: needs discussion

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