首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法对mobx-state-tree数组执行forEach

无法对mobx-state-tree数组执行forEach
EN

Stack Overflow用户
提问于 2020-11-30 01:32:23
回答 1查看 437关注 0票数 1

我正在尝试使用typescript和MobX-state-tree来组织我的新项目,但是我在服务函数中遇到了一个小问题,我需要迭代MST数组,它存储在我的一个模型中

以下是此模型的一个示例

代码语言:javascript
复制
export const ValueHolder = types.model("ValueHolder", {
    identifier: types.maybeNull(types.union(types.number, types.string))
});
    
export const Results = types.model("Results", {
    locations: types.array(ValueHolder)
});

和我的服务功能

代码语言:javascript
复制
sendLocationNotification(locations: ValueHolderArrayType) {
    locations.forEach(function (locationResult) {
    });
}

如下定义的Typescript类型

代码语言:javascript
复制
export type ValueHolderArrayType = IArrayType<typeof ValueHolder>;
export type ValueHolderType = Instance<typeof ValueHolder>;

但这会导致TS2339: Property 'forEach' does not exist on type 'ValueHolderArrayType'.

我可以看到IArrayType从IType扩展而来,它包含IMSTArray,它在根目录中是从js数组类型扩展而来的,所以它应该有forEach签名。显然,我做错了什么,但在学习之后,我就是找不到我的错误。我想错误出在我的打字上。

您能指导我应该如何编写类型,以便我能够迭代MST数组吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-30 02:46:23

遗憾的是,我不能告诉您为什么export type ValueHolderArrayType = IArrayType<typeof ValueHolder>;不能工作,因为我以前从未显式使用过IArrayType,但是您可以将locations注释为ValueHolderType数组,它就可以工作:

代码语言:javascript
复制
sendLocationNotification(locations: ValueHolderType[]) {
    locations.forEach(function (locationResult) {
        // ...
    });
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65063035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档