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

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

🏡作者主页:点击!

🤖Vue专栏:点击!

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

文章目录

1、接口概念作用及定义

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

接口的定义

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

javascript 复制代码
interface IUser {
  id: number;
  name: string;
  age: number;
}

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

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

定义规则

使用规则定义变量

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

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

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

javascript 复制代码
<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

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

使用

javascript 复制代码
<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>

结果:

如果编写代码的时候填写错误,也都会有错误提示:

相关推荐
纪元A梦17 分钟前
华为OD机试真题——告警抑制(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
java·c语言·javascript·c++·python·华为od
ApiHug24 分钟前
ApiHug SDK 1.3.5 Vue 框架 - 预览版
前端·javascript·vue.js·spring·vue·apihug·apismart
旺代1 小时前
React Router
前端·javascript·react.js
进取星辰1 小时前
18、状态库:中央魔法仓库——React 19 Zustand集成
前端·react.js·前端框架
心海资源1 小时前
Java多语言DApp质押挖矿盗U源码(前端UniApp纯源码+后端Java)
java·前端·uni-app
小杨升级打怪中2 小时前
前端面经-VUE3篇(二)--vue3组件知识(二)依赖注入、异步组件、生命周期、组合式函数、插件
开发语言·前端·javascript
羊啊羊372 小时前
Vue 3 事件总线详解:构建组件间高效通信的桥梁
前端·javascript·vue.js
MYmayue2 小时前
vue3封装全局方法
前端·javascript·vue.js
GISer_Jing2 小时前
前端面试常问问题[From CV]
前端·javascript·面试
小妖怪的夏天3 小时前
React Native 动态切换主题
javascript·react native·react.js