编辑:此处有一个最小的示例here
我正在将TypeScript与TypeORM库一起使用。这是“基础” Repository
的通用定义:
class Repository<Entity extends ObjectLiteral> {
find(conditions?: FindConditions<Entity>): Promise<Entity[]>;
}
如果我尝试扩展此类,将Bank
类传递为Entity
,则它会按预期工作(我在find
方法中自动完成) :
class Bank {
name: string;
}
class BankRepository extends Repository<Bank> {
public test():void {
this.find({ name: 'foo' }); // OK!
}
}
但是,如果我尝试使用BankModel
抽象类使我的通用:
abstract class BankModel {
foo: string;
}
class BankRepository<E extends BankModel> extends Repository<E> {
test(foo: string): void {
this.find({ foo: foo }); // KO!!!
}
}
错误是:
类型'{foo:string; }”不能分配给“ FindConditions”类型的参数。ts(2345),
FindConditions<E>
的声明是:
declare type FindConditions<T> = {
[P in keyof T]?: FindConditions<T[P]> | FindOperator<FindConditions<T[P]>>;
};
所以..为什么不起作用?
答案 0 :(得分:0)
我发现什么是Typescript错误。我使用版本3.6.3。