Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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
Javascript 在typescript界面中使用泛型并将其分配给arrow函数_Javascript_Typescript - Fatal编程技术网

Javascript 在typescript界面中使用泛型并将其分配给arrow函数

Javascript 在typescript界面中使用泛型并将其分配给arrow函数,javascript,typescript,Javascript,Typescript,[编辑]我有一个关于typescript泛型的快速问题, 我试图实现的是编写一个通用函数,将某种类型的项数组插入firebase数据库。我事先不知道我将接收到的阵列,所以我编写了这个函数,它可以工作: 如果使用泛型类型定义箭头函数,则没有错误: export const seedInitialDatas=async( userUid:string, collectionName:string, itemsToSeed:T[] ):承诺=>{ forEach(异步(itemToSeed)=>{ 等

[编辑]我有一个关于typescript泛型的快速问题, 我试图实现的是编写一个通用函数,将某种类型的项数组插入firebase数据库。我事先不知道我将接收到的阵列,所以我编写了这个函数,它可以工作: 如果使用泛型类型定义箭头函数,则没有错误:

export const seedInitialDatas=async(
userUid:string,
collectionName:string,
itemsToSeed:T[]
):承诺=>{
forEach(异步(itemToSeed)=>{
等待火库
.收集(“用户”)
.doc(userUid)
.集合(集合名称)
.添加(itemToSeed);
});
};
现在,与直接在函数中定义类型不同,我希望使用接口类型来定义它:

type-SeedInitialData=(userUid:string,collectionName:string,itemsToSeed:T[])=>Promise;
导出常量SeedInitialData:SeedInitialData=async(
userUid,
收藏名称,
种子
) => {
forEach(异步(itemToSeed)=>{
等待火库
.收集(“用户”)
.doc(userUid)
.集合(集合名称)
.添加(itemToSeed);
});
};

如果我这样做,我会收到一个错误:泛型类型“SeedInitialData”需要1个类型为

的参数,我不能100%确定您要做什么,但将函数转换为类型或接口非常简单:

type s<Items> = (userUid: string, collectionName: string, itemsToSeed: Items[]) => void;

export const seedInitialDatas: s<string> = async (
    userUid,
    collectionName,
    itemsToSeed
): Promise<void> => { };
type s=(userUid:string,collectionName:string,itemsToSeed:Items[])=>void;
导出常量seedInitialDatas:s=async(
userUid,
收藏名称,
种子
):Promise=>{};
或作为接口:

interface s<Items> { 
    (userUid: string, collectionName: string, itemsToSeed: Items[]): void
};

export const seedInitialDatas: s<string> = async (
    userUid,
    collectionName,
    itemsToSeed
): Promise<void> => { };
接口{
(userUid:string,collectionName:string,itemsToSeed:Items[]):void
};
导出常量seedInitialDatas:s=async(
userUid,
收藏名称,
种子
):Promise=>{};

虽然我建议您使用类型,因为接口通常用于对象

,但我不能100%确定您想做什么,但将函数转换为类型或接口非常简单:

type s<Items> = (userUid: string, collectionName: string, itemsToSeed: Items[]) => void;

export const seedInitialDatas: s<string> = async (
    userUid,
    collectionName,
    itemsToSeed
): Promise<void> => { };
type s=(userUid:string,collectionName:string,itemsToSeed:Items[])=>void;
导出常量seedInitialDatas:s=async(
userUid,
收藏名称,
种子
):Promise=>{};
或作为接口:

interface s<Items> { 
    (userUid: string, collectionName: string, itemsToSeed: Items[]): void
};

export const seedInitialDatas: s<string> = async (
    userUid,
    collectionName,
    itemsToSeed
): Promise<void> => { };
接口{
(userUid:string,collectionName:string,itemsToSeed:Items[]):void
};
导出常量seedInitialDatas:s=async(
userUid,
收藏名称,
种子
):Promise=>{};

虽然我建议您使用类型,因为接口通常用于对象

我刚刚解决了这个问题,但我将类型T分配给类型定义,而不是函数:

类型SeedInitialData=(
userUid:string,
collectionName:string,
itemsToSeed:T[]
)=>承诺;
导出常量SeedInitialData:SeedInitialData=async(
userUid,
收藏名称,
种子
) => {
forEach(异步(itemToSeed)=>{
等待火库
.收集(“用户”)
.doc(userUid)
.集合(集合名称)
.添加(itemToSeed);
});
};

我刚刚解决了,我将类型T分配给类型定义,而不是函数:

类型SeedInitialData=(
userUid:string,
collectionName:string,
itemsToSeed:T[]
)=>承诺;
导出常量SeedInitialData:SeedInitialData=async(
userUid,
收藏名称,
种子
) => {
forEach(异步(itemToSeed)=>{
等待火库
.收集(“用户”)
.doc(userUid)
.集合(集合名称)
.添加(itemToSeed);
});
};

你会得到什么错误?你到底想做什么?你会得到什么错误?你到底想做什么?问题是我事先不知道我将传递给我的接口的泛型类型,所以我不能有s,但应该是s,基本上我正在编写一个泛型函数,它将接收某种类型的数组是的,该类型或接口使用一个名为Items的泛型类型(您可以用T替换它,它仍然可以工作),我只添加了字符串以表明它可以工作。如果您在运行时动态接收类型,TypeScript将帮不上忙我不知道我将传递给接口的泛型类型,因此我不能有s,但它应该类似于s,基本上我正在编写一个泛型函数,它将接收某种数组是的,该类型或接口使用一个名为Items的泛型类型(您可以用T替换它,它仍然可以工作),我只添加了字符串以表明它可以工作。如果在运行时动态接收类型,TypeScript将帮不上忙