javascript - 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 Array
inJS
吗?
解决方案
我不知道是否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
,因此无论您在其中使用哪种类型检查器,都不应该有问题。
推荐阅读
- spring-boot - Spring Boot中的日志未显示在终端中
- jquery - 标头和内容的 Kendo Grid Json 数据
- django - 升级到 Django 3.2 LTS 后 iframe 停止工作
- r - 不同时间段(年、月、周)的收入——我想把数据标准化
- kubernetes - Kubernetes:从单个控制平面向上/向下扩展 HA 集群
- bash - bash script arguments parsing differ when called from script and from command line
- gcc - gcc link fail 'undefined reference to', path relevant
- kubernetes - Kubernetes deploy a single NodePort for two deployments in different namespaces
- vue.js - 模板在 vue.js 中渲染两次
- python-3.x - 打印 numpy 矩阵的表格格式