我正在尝试使用typescript和MobX-state-tree来组织我的新项目,但是我在服务函数中遇到了一个小问题,我需要迭代MST数组,它存储在我的一个模型中
以下是此模型的一个示例
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)
});和我的服务功能
sendLocationNotification(locations: ValueHolderArrayType) {
locations.forEach(function (locationResult) {
});
}如下定义的Typescript类型
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数组吗?
谢谢
发布于 2020-11-30 02:46:23
遗憾的是,我不能告诉您为什么export type ValueHolderArrayType = IArrayType<typeof ValueHolder>;不能工作,因为我以前从未显式使用过IArrayType,但是您可以将locations注释为ValueHolderType数组,它就可以工作:
sendLocationNotification(locations: ValueHolderType[]) {
locations.forEach(function (locationResult) {
// ...
});
}https://stackoverflow.com/questions/65063035
复制相似问题