You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native TypeScript编译错误:Generator类型缺失UploadToGetID属性

解决生成器函数的TypeScript类型不匹配错误

错误原因

你直接将生成器函数的返回类型声明为UploadToGetID,但TypeScript中生成器函数的类型是Generator<Yield类型, 返回值类型, 传入类型>,生成器对象本身并非UploadToGetID类型,而是最终返回值为该类型,因此编译器报错说生成器对象缺少imageId、imageThumbId属性。

修复方案

将函数的返回类型修改为Generator<any, UploadToGetID, unknown>,明确指定生成器的最终返回值类型是UploadToGetID,同时保留生成器的特性。另外需要确保函数的所有分支都返回UploadToGetID类型的对象(比如try块末尾也要添加return语句)。

修改后的代码示例

type UploadToGetID = {
  imageId: string | undefined;
  imageThumbId: string | undefined;
};

// 修改返回类型为Generator,指定最终返回值是UploadToGetID
function* uploadImageOrVideoToGetId(
  image: Image | undefined,
  imageThumb: ImageThumb | undefined,
): Generator<any, UploadToGetID, unknown> {
  const uploadId: UploadToGetID = {
    imageId: undefined,
    imageThumbId: undefined,
  };
  try {
    if (image) {
      const token = yield Helper.getDataStored(JWT_KEY);
      let newImage: ImageResizerResponse = yield call(
        ImageResizer.createResizedImage,
        imageThumb!.url!,
        5000,
        5000,
        'JPEG',
        100,
      );

      let file = newImage.uri;
      if (Platform.OS === 'android') {
        file = newImage.uri.replace('file://', '');
      }
      // 补充你的上传逻辑,比如设置uploadId.imageId等
      // ...
    }
    // try块末尾添加return,确保正常分支也返回uploadId
    return uploadId;
  } catch (error) {
    Alert.alert('Upload image fail! ' + error);
    return uploadId;
  }
}

额外说明

  • 如果你能明确yield出去的值的类型,可以把Generator<any, UploadToGetID, unknown>中的any替换为具体类型(比如string、Promise<any>等),让类型检查更严格。
  • 确保所有代码路径都返回UploadToGetID对象,避免出现无返回值的情况导致类型异常。

内容的提问来源于stack exchange,提问作者Trần Ân

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:35:31