Можно ли создать универсальный класс, индексируемый условием в typescript?

#javascript #typescript #nestjs

Вопрос:

Предположим, что схема проверки, подобная этой :

 export class User {  @IsNotEmpty()  id: number;    @IsNotEmpty()  name : String   @IsNotEmpty()  hair : String }  

И я использую эту схему для вставки пользователей в свою базу данных, однако я хочу повторно использовать ту же схему для обновления данных, но ни имя, ни переменные волос теперь не должны быть пустыми.

Поэтому вместо создания нового класса для этого будет лучше, если индекс типа в классе решит, когда мне нужны оба предлога.

 type Optional = () class Required extends Optional {} class NotRequired extends Optional {}  export class Userlt;N extends Optionalgt; {  @validateIf(() =gt; /* check if Optional extends for Required */)  @IsNotEmpty()  id: number;    @IsNotEmpty()  name : String   @IsNotEmpty()  hair : String }  

В принципе, Userlt;Requiredgt; потребуются декораторы IsNotEmpty, и Userlt;NotRequiredgt; не потребуются декораторы.

Я знаю, что typescript не может поднять значение типа во время выполнения, но, возможно, есть способ в чистом времени компиляции.