Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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,我是TypeScript新手,对类型断言有问题。我有一个函数,它希望返回类型DataLog。当我刚刚返回allPhotoData时,我的编辑器显示了一个类型问题,尽管返回数据的形状与数据日志类型完全相同。但是,当我将所有Photodata作为数据日志返回时,编辑器消息消失了。这种处理方式可以接受吗 async function setDataTypes( userId: string | number, ): Promise<DataLog | undefined | null>

我是TypeScript新手,对类型断言有问题。我有一个函数,它希望返回类型
DataLog
。当我刚刚返回allPhotoData时,我的编辑器显示了一个类型问题,尽管返回数据的形状与
数据日志
类型完全相同。但是,当我
将所有Photodata作为数据日志返回时,编辑器消息消失了。这种处理方式可以接受吗

async function setDataTypes(
  userId: string | number,
): Promise<DataLog | undefined | null> {

 const indexPhoto = await api.getIndexPhotoData(
    userId,
   'subType'),
 );

  const { allPhotoData } = keyBy(indexPhoto, () => {
    return 'allPhotoData';
  });

  return allPhotoData as DataLog;
}
异步函数setDataTypes(
userId:string | number,
):承诺{
const indexPhoto=await api.getIndexPhotoData(
用户ID,
“子类型”),
);
const{allPhotoData}=keyBy(indexPhoto,()=>{
返回'allPhotoData';
});
将所有Photodata作为数据日志返回;
}

您的函数不需要
数据日志
;它期待着一个
承诺
,而这不是你所给予的it@SilvioMayolo抱歉,我刚刚添加了包含promise的函数中缺少的部分。我相信很多有经验的人都有建议,但我更喜欢不指定返回,这样我就可以看到编译器的想法。为了回答您的问题,添加
作为数据日志
基本上是说,“这里有什么,我保证它是一个数据日志”。执行“as”实际上并不验证
allPhotoData
是否具有数据日志的属性。要做到这一点,您可以使用
typeof
检查个人,或者使用io-ts之类的库。看起来您实际上并没有返回一个解析为
Datalog | undefined | null
并警告您的承诺。找出哪里出了问题,而不是用
作为数据日志来推翻它。在这种情况下,您可能会返回一个
字符串
。请包含您收到的确切错误消息