Vyhledávání na webu

Existuje způsob, jak dělat vnořené generické omezení v TypeScriptu?


Řekněte, že mám následující třídy:

   abstract class Id { ... }
   abstract class Entity<TId extends Id>{ ... }
   class ProductId extends Id { ... }
   class ProductEntity extends Entity<ProductId> { ... }

a chtěl jsem vytvořit třídu takto:

class GenericRepository<TEntity extends Entity<TId extends Id>> {
    update(entity: TEntity): void { ... }
    get(id: TId): TEntity { ... }
}

Je to možné bez toho, aniž byste dělali něco jako:

class GenericRepository<TEntity extends Entity<TId>, TId extends Id> {
    update(entity: TEntity): void { ... }
    get(id: TId): TEntity { ... }
}

moci zavolat:

const foobar = new GenericRepository<ProductEntity>();

místo:

const foobar = new GenericRepository<ProductEntity, ProductId>();

a aby to nějak omezovalo hodnotu jak pro Entity, tak pro Id?

Jinými slovy, potřebuji mít vnořený omezení.