首页 > 解决方案 > Javascript 中的类型化数组

问题描述

我想在 Javascript 中创建一个类型化数组。

例如,当我创建这样的类时:

export default class AnalyticData {
    constructor(collection = []) {
        return collection.map((item) => new AnalyticDatum(item))
    }
}

在我使myData = new AnalyticData()myData 的类型是 Array 而不是之后AnalyticData

有谁知道如何确保我有一个AnalyticData类型而不是一个数组?

我问这个是因为在我的 vue 组件中我有这个:

    props: {
        analyticData: {
            type: AnalyticData,
            required: true,
        },
    },

所以这个警告:

[Vue warn]: Invalid prop: type check failed for prop "analyticData". Expected AnalyticData, got Array

有人知道如何创建typed ArrayinJS吗?

标签: javascriptarraysvue.jsclassobject

解决方案


我不知道是否AnalyticDatum是错字,但您可以使用自定义类型extends

export default class AnalyticData extends Array {
  constructor(collection = []) {
    super().push(...collection);
  }
};

如果AnalyticDatum是另一个类来定义AnalyticData项目,您仍然可以使用该map(...)过程:

export default class AnalyticData extends Array {
  constructor(collection = []) {
    super().push(...collection.map(item => new AnalyticDatum(item)));
  }
};

在这两种情况下, 都new AnalyticData将是 的实例AnalyticData,因此无论您在其中使用哪种类型检查器,都不应该有问题。


推荐阅读