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”]
也适合这种类型。