Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 为什么我的泛型不';你不能按预期工作吗?_Typescript_Typeorm_Typescript Generics - Fatal编程技术网

Typescript 为什么我的泛型不';你不能按预期工作吗?

Typescript 为什么我的泛型不';你不能按预期工作吗?,typescript,typeorm,typescript-generics,Typescript,Typeorm,Typescript Generics,编辑:这里提供了一个简单的示例 我正在使用TypeScript和TypeForm库。这是“基本”存储库的一般定义: 类存储库{ 查找(条件?:查找条件):承诺; } 如果我尝试扩展这个类,将银行类作为实体传递,它会按预期工作(我在查找方法中自动完成): 错误是: 类型为“{foo:string;}”的参数不能分配给类型为“FindConditions.ts”(2345)的参数 FindConditions的声明是: declare type FindConditions<T> =

编辑:这里提供了一个简单的示例

我正在使用TypeScript和TypeForm库。这是“基本”
存储库
的一般定义:

类存储库{
查找(条件?:查找条件):承诺;
}
如果我尝试扩展这个类,将
银行
类作为
实体
传递,它会按预期工作(我在
查找
方法中自动完成):

错误是:

类型为“{foo:string;}”的参数不能分配给类型为“FindConditions.ts”(2345)的参数

FindConditions
的声明是:

declare type FindConditions<T> = {
  [P in keyof T]?: FindConditions<T[P]> | FindOperator<FindConditions<T[P]>>;
};
声明类型FindConditions={
[P in keyof T]?:FindConditions | FindOperator;
};
所以。。为什么它不起作用


我发现了什么是Typescript错误。我使用的是3.6.3版。

我不知道类型,所以我不能复制它,但我的直觉是,这将是这样的,假设
FindConditions
可分配给
FindConditions
是无效的,因为所有可能的
E扩展了BankModel
;也就是说,可能存在
BankModel
的某些子类型
E
,其
{foo:foo}
FindConditions
不兼容。如果你去掉这个问题对typeorm的依赖,然后发布一个帖子,我也许可以回答。否则,祝你好运@jcalz为什么这样假设是无效的?如果E扩展了BankModel,那么公共属性“foo”应该在那里。你读了链接的问题了吗?@jcalz我在没有使用Typeorm库的情况下做了一个简单的例子。你能帮我理解为什么它不起作用吗?所有的代码都应该在问题文本中,而不仅仅是外部链接中,如中所述。如果您确实提供了一个链接,那么它应该是一个web IDE,这样其他人就可以看到正在发生的事情,而不必在他们自己的环境中安装任何东西。我怀疑是否有人愿意
npm在他们的机器上安装
东西来回答一个问题。。。在理想的情况下,有人可以将代码放入一个文件夹中并进行复制。祝你好运!
abstract class BankModel {
  foo: string;
}

class BankRepository<E extends BankModel> extends Repository<E> {
  test(foo: string): void {
    this.find({ foo: foo }); // KO!!! 
  }
}
declare type FindConditions<T> = {
  [P in keyof T]?: FindConditions<T[P]> | FindOperator<FindConditions<T[P]>>;
};