У меня проблема с машинописным текстом при создании общего c репо. Я хочу принудительно вводить тип, применяя тип TEntity generi c для расширения BaseEntity следующим образом:
@EntityRepository()
export class ClsGEntitiesRepository<TEntity extends BaseEntity> {
private _dbConnection: Connection;
private _entity: TEntity;
constructor(entity: TEntity, dbConnection: Connection) {
this._dbConnection = dbConnection;
this._entity = entity;
}
Однако при попытке использовать getRepository машинописный текст жалуется при передаче Entity в качестве параметра этого функция
ошибка: Тип «BaseEntity» не может быть присвоен типу строка | Функция | (новый () => TEntity) | EntitySchema '.
const rootQuery = this._dbConnection
.getRepository<TEntity>(this._entity) <--error
.createQueryBuilder()
Это довольно неприятно, поскольку мне нужно передать строку, которая представляет имя Entity (который является классом) в качестве временного решения.
Странно то, что если я использую этот метод не в классе c, он отлично работает. Как вы можете видеть ниже, объект TestEntity расширяет BaseEntity, и я могу без проблем использовать его в getRepo
@Entity({
name: "testentity",
})
export class TestEntity extends BaseEntity implements ITestEntity {
@PrimaryColumn({
type: "uuid",
nullable: false,
})
resourceId: string;
@Column({
type: "float",
nullable: true,
default: 0.0,
})
value: number;
}
const a = dbConnection
.getRepository<TestEntity>(TestEntity) <--no error
.createQueryBuilder()
Что мне здесь не хватает?