typescript - 如何使用打字稿将 vue 道具类型设置为用户类数组?
问题描述
我想知道是否有办法让我的组件只接受用户类的数组。
@Prop({ required: true, type: () => Array }) readonly user: Array<User>;
上面的代码接受所有数组。
解决方案
可以使用自定义验证器检查道具类型:
@Prop({
required: true,
validator: prop => Array.isArray(prop) && prop.every(item => item instanceof User)
}) readonly user: Array<User>;
TypeScript 是结构化类型的,Array<User>
不需要数组作为User
类的实例。
的目的Array<User>
是在组件内部声明 prop 类型,最好应该是readonly user!: Array<User>
.
由于 vue-class-component 和 vue-property-decorator 类组件的限制,TypeScript 无法保证 props 在编译时的类型安全。Vue 组合 API 可用于严格类型的 TypeScript 组件。
推荐阅读
- spring-boot - 微服务无法连接到作为 docker 镜像运行的 AXON 服务器
- kubernetes - 错误:elasticsearch 没有部署的版本错误:插件“2to3”退出并出现错误
- flutter - 如何在 Flutter 上获取其他应用程序的通知数据,尤其是在 IOS 上?
- google-sheets - 在 googlesheet 中为每个学生生成/制作图形并将图形图像自动保存到 gdrive
- singularity-container - 为什么奇异容器中的命令无法运行?
- r - Aov 模型摘要在函数中使用时不打印
- netsuite - netsuite restlet 错误“消息”:“ReferenceError:\“Ext\”未定义。(app-all.js#1)。”
- python - PyPDF2 在追加时打印数百个空白页
- flutter - 如何导航到 Flutter Flame Engine 游戏小部件之外的小部件
- python-3.x - ConnectionRefusedError: [Errno 111] Connect call failed -- 我需要定位哪些 IP?