【问题标题】:Parameter 'item' implicitly has an 'any' type error参数“item”隐含一个“any”类型错误
【发布时间】:2021-12-23 02:27:35
【问题描述】:

我有以下代码:

    var allItems = await assetLoader.loadMore(); // returns (Folder[] & Project[])

    allItems.forEach(item => {
        console.log(item.getAssetId());
        console.log(item.getName());
    });

运行代码时出现以下错误Parameter 'item' implicitly has an 'any' type.

有人可以帮忙吗?

类 AssetLoader {

这是assetLoader来自的类:

export class AssetsDataLoader {
    allItems: Folder[] & Project[];

    public async loadMore() {
       return this.allItems;
    }
}

【问题讨论】:

  • 这能回答你的问题吗? how to define a type under forEach in typescript?
  • 那行不通
  • 您必须将参数键入到数组函数的回调中,例如mapforEach。 Typescript(故意)不会为您推断类型,这是 Anders 做出的深思熟虑的决定。所以让它allItems.forEach((item: Folder & Project) => { 它应该可以正常工作。
  • 这不是我在tsplay.dev/mZbeam看到的错误,请给minimal reproducible exampleFolder[] & Project[] 没有什么意义,你可能只想要(Folder & Project)[]tsplay.dev/NddzdN

标签: typescript


【解决方案1】:

尝试将解析的 loadMore 类型更改为 Folder[] | Project[]

【讨论】:

  • 我收到错误 TS2322: Type '(Folder | Project)[]' is notassignable to type 'Project[] |文件夹[]'。类型“(文件夹 | 项目)[]”不可分配给类型“项目 []”。类型'文件夹|项目”不可分配给类型“项目”。 “文件夹”类型缺少“项目”类型的以下属性:_dcxComposite、getDCXComposite
  • 我更新了。立即尝试
  • 现在我收到错误 TS2345:“文件夹”类型的参数不可分配给“文件夹和项目”类型的参数。 “文件夹”类型缺少“项目”类型的以下属性:_dcxComposite、getDCXComposite。当我推送到 allItems
  • 再次查看我的问题。我更新了。
  • Folder[] & Project[] 基本上是any。这意味着获取 Folder[] 和 Project[] 的所有属性并创建一个具有两者属性的类型(从打字稿的角度来看它没有意义)
猜你喜欢
  • 2021-12-24
  • 2020-07-30
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
  • 2018-09-23
  • 2018-09-25
  • 2017-11-30
相关资源
最近更新 更多