当前位置: 首页 > news >正文

【Vue】Vue3.0(十四)接口,泛型和自定义类型的概念及使用

上篇文章: 【Vue】Vue3.0(十三)中标签属性ref(加在普通标签上、加在组件标签上)、局部样式

🏡作者主页:点击!

🤖Vue专栏:点击!

⏰️创作时间:2024年10月20日12点50分

文章目录

    • 1、接口概念作用及定义
    • 2、泛型和自定义类型;比如可以规定一个数组中的元素的类型:
      • 写法一:在定义具体变量的时候使用泛型
      • 写法二;在定义接口的时候,定义自定义类型就使用泛型

1、接口概念作用及定义

在 Vue 3 中,接口是一种用于定义对象形状的方式,它可以帮助我们确保组件接收正确的数据类型和结构。接口的使用可以提高代码的可读性和可维护性,特别是在涉及到组件之间的数据传递和交互时;

接口的定义
在 Vue 3 中,可以使用 TypeScript 来定义接口。接口使用interface关键字进行声明,后面跟着接口的名称(通常以大写字母I开头,这是一种命名约定,但不是必需的),然后是一对花括号,在花括号内定义接口的属性和方法。例如:

interface IUser {id: number;name: string;age: number;
}

在上述代码中,定义了一个名为IUser的接口,它描述了一个用户对象的形状,包含id、name和age三个属性,分别为数字类型、字符串类型和数字类型。

作用:比如我在其他的组件中想要创建一个Person类型的对象,那如果有这个标准规则了,如果创建的对象中的属性错误的话,那就会自动提示,让我们进行修改,以避免我们属性因为大意写错。
使用例子:
定义规则
在这里插入图片描述
使用规则定义变量
在这里插入图片描述
在这里插入图片描述

定义的personEx变量中有Interface种的属性,符合属性的名字和类型,所以不会提示错误,如果其中的name写成了name1,那就会提示红线,让我们进行修改。

2、泛型和自定义类型;比如可以规定一个数组中的元素的类型:

写法一:在定义具体变量的时候使用泛型


<script lang="ts" setup name="Person">
import {type personInter} from '@/types'
//let personEx:personInter={id:'1121212',name:'张三',age:18}
//console.log('personEx=',personEx);//规定一个数组中的每一个元素都是person类型的规则
let persons:Array<personInter> =[  //在定义具体变量的时候使用了泛型{id:'1121211',name:'张三',age:18},{id:'1121213',name:'王五',age:19},{id:'1121215',name:'赵六',age:20}
]
console.log('persons=',persons);</script>

写法二;在定义接口的时候,定义自定义类型就使用泛型

先定义 一个自定义类型:type

//定义自定义类型:一个Person数组中元素类型
export type persons = Array<personInter> //写法二
export type persons2=personInter[]//写法三

使用

<template><div class="person">???</div>
</template><script lang="ts" setup name="Person">
import { type personInter, type persons, type persons2 } from '@/types'
let personEx: personInter = { id: '1121212', name: '张三', age: 18 }
console.log('personEx=', personEx);//方法一:规定一个数组中的每一个元素都是person类型的规则
let persons: Array<personInter> = [{ id: '1121211', name: '张三', age: 18 },{ id: '1121213', name: '王五', age: 19 },{ id: '1121215', name: '赵六', age: 20 }
]
console.log('persons=', persons);//方法二定义一个元素符合personInter规则的数组
let personList2: persons = [{ id: '1121211', name: '张三', age: 18 },
{ id: '1121213', name: '王五', age: 19 },
{ id: '1121215', name1: '赵六', age: 20 }]
console.log('personList2=', personList2);//方法三 定义一个元素符合personInter规则的数组
let personList3: persons2 = [{ id: '1121211', name: '张三', age: 18 },
{ id: '1121213', name1: '王五', age: 19 },
{ id: '1121215', name: '赵六', age: 20 }]
console.log('personList3=', personList3);</script><style scoped>
.person {background-color: skyblue;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;
}li {font: 1em sans-serif;
}
</style>

结果:
在这里插入图片描述
如果编写代码的时候填写错误,也都会有错误提示:
在这里插入图片描述

http://www.lryc.cn/news/467753.html

相关文章:

  • 【C++】红黑树万字详解(一文彻底搞懂红黑树的底层逻辑)
  • 开源FluentFTP实操,操控FTP文件
  • 论文解读 | ECCV2024 AutoEval-Video:一个用于评估大型视觉-语言模型在开放式视频问答中的自动基准测试...
  • postgresql14主从同步流复制搭建
  • 企业信息化管理中的数据集成方案:销售出库单对接
  • 3.cpp基本数据类型
  • MCK主机加固与防漏扫的深度解析
  • 《软件估算之原始功能点:精准度量软件规模的关键》
  • 序列化与反序列化
  • 安装nginx实现多ip访问多网站
  • 每日回顾:简单用C写 冒泡排序、快速排序
  • 前端_007_Axios库
  • NAND FLASH 与 SPI FLASH
  • QTCreator打不开双击没反应
  • vue npm run ...时 报错-系统找不到指定的路径
  • 54页可编辑PPT | 大型集团企业数据治理解决方案
  • STM32嵌入式移植GmSSL库
  • 【mod分享】极品飞车10高清模组,,全新道路,全新建筑,高清植被,全新的道路围栏,全新的天空,画质直逼极品飞车20。支持光追
  • 使用U-KAN训练自己的数据集 — 医疗影像分割
  • 游戏盾在防御DDoS与CC攻击中的作用与实现
  • 为什么说红帽认证(RHCE)是网络工程师的万金油证书?
  • 89.【C语言】编译和链接
  • 优秀学员统计
  • 电脑程序变化监控怎么设置?实时监控电脑程序变化的五大方法,手把手教会你!
  • 2.1.3 编码和调制(下)
  • 【网络安全渗透测试入门】之XSS漏洞检测、利用和防御机制XSS游戏(非常详细)收藏这一篇就够了!
  • [ComfyUI]Flux:超赞古风少女LORA,唯美江南水乡小桥流水轻舟江南美人
  • 从蚂蚁金服面试题窥探STW机制
  • 【MySQL数据库】MySQL高级语句(SQL语句进阶版)
  • Milvus 到 TiDB 向量迁移实践