Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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 - Fatal编程技术网

Typescript 如何使用始终是数组的泛型编写接口?

Typescript 如何使用始终是数组的泛型编写接口?,typescript,Typescript,我有一个通用函数: export function limitToApiContraints<T extends Array>(payload: T, type: IQueueTypes) { ... } 将功能限制导出到picontracts(有效负载:T,类型:iqueueetypes){ ... } 不幸的是,通用错误的签名指出: 泛型类型“数组”需要1个类型参数 如果我将此更改为: export function limitToApiContraints<T e

我有一个通用函数:

export function limitToApiContraints<T extends Array>(payload: T, type: IQueueTypes) {
  ...
}
将功能限制导出到picontracts(有效负载:T,类型:iqueueetypes){
...
}
不幸的是,通用错误的签名指出:

泛型类型“数组”需要1个类型参数

如果我将此更改为:

export function limitToApiContraints<T extends Array<any>>(payload: T, type: IQueueTypes) {
  return foo as T;
}
将功能限制导出到picontracts(有效负载:T,类型:iqueueetypes){
返回foo作为T;
}
函数签名通过了结构测试,但当我返回
foo
作为T时,它返回为
ready:any[]| IGitHubRepoMap[]
(其中T=IGitHubRepoMap[])


如何声明T始终是数组,但在返回时保留离散类型?

不要将数组属性作为泛型定义的一部分,而是使用

function test<T>(payload: T[]) { ... } 
功能测试(有效负载:T[]){…}

不要将数组属性作为泛型定义的一部分,而是使用

function test<T>(payload: T[]) { ... } 
功能测试(有效负载:T[]){…}

真有趣,我刚才这么做了。但是这是否意味着将泛型类型作为数组传递是不可能的呢?
any[]
的问题在于它不是你所想的:它不是指“相同类型的对象数组”,而是指“任意数组”。所以
[42,“Foo”]
也适合这种类型。有趣的是,我就是这么做的。但是这是否意味着将泛型类型作为数组传递是不可能的呢?
any[]
的问题在于它不是你所想的:它不是指“相同类型的对象数组”,而是指“任意数组”。所以
[42,“Foo”]
也适合这种类型。