Как добавить условие в тип по определению класса в TypeScript

Как мне в типе RecursivePartial добавить условие, что если T[P] является любым классом, а не просто объектом, либо массивом таких классов, то не оборачивать в RecursivePartial, а вернуть T[P]. Причем перечислить классы "extends A" не вариант, я не могу знать какие могут быть классы в передаваемом типе. Спасибо

type RecursivePartial<T> = {
[P in keyof T]?:
  T[P] extends (infer U)[] ? RecursivePartial<U>[] :
  T[P] extends object ? RecursivePartial<T[P]> :
  T[P]
}

class A {
  id: number;
  constructor(data: { id: number }) {
    this.id = data.id;
  }
};

type B = {
  id: number;
  obj: {
    value1: string;
    value2: string;
  };
  item: A;
  items: A[];
}

type C = RecursivePartial<B>

Я хотел бы при присваивании const c: C = {}; c.item = { id: 1 }; видеть ошибку, что c.item должен быть классом A


Ответы (0 шт):