首页 > 其他分享 >Vue3 从入门到入土(TypeScript接口)

Vue3 从入门到入土(TypeScript接口)

时间:2022-09-30 11:15:34浏览次数:70  
标签:TypeScript console Light void 接口 alert 入土 Vue3 Alarm

前言

在上一章, 我们就写过简单的接口, 本章更深入的了解接口

接口是对象的状态(属性)和行为(方法)的抽象(描述)

接口

以例子来了解, 我们有这样的需求

定义一个对象存放用户信息, 有四种属性
- id 是 number 类型, 必须有, 并且只读
- age 是 number 类型, 必须有
- name 是 string 类型, 必须有
- sex 是 string 类型, 可以没有

可选/只读属性

(()=>{
    // 接口是一种类型/规范/规则/能力/约束

    // 定义一个接口 IUser
    // 接口一般以 I 开头
    interface IUser{
        readonly id: number,  // 在定义时, 指定 readonly 代表这个属性是只读的
        name: string,
        age: number,
        sex?: string,  // 在定义时, 指定 ? 代表这个属性是可为空的, 不指定默认必须存在
    }

    // 定义一个对象
    const u1:IUser={
        id: 1,
        name: "u1",
        age: 18,
    }
    const u2:IUser={
        id: 2,
        name: "u2",
        age: 19,
        sex: "男",
    }
    // u2.id = 3  // 在实例化后, 无法对只读属性进行重新赋值
})()

函数类型

上面的接口都是作为对象使用, 其实他也可以作为函数的类型使用

(()=>{
    // 接口是一种类型/规范/规则/能力/约束

    // 定义一个接口 SearchFunc, 作为函数约束使用
    interface SearchFunc{
            // 传入两个参数, 都是字符串, 返回 bool
            (source: string, subString: string): boolean
    }

    // 定义一个函数, mySearch, 遵守接口 SearchFunc 
    const mySearch: SearchFunc = function(source: string, sub: string): boolean{
        return source.search(sub) > -1
    }
    console.log(mySearch("abcd", "bc"))
})()

类实现接口

(()=>{
    // 接口是一种类型/规范/规则/能力/约束

    // 一个类可以实现多个接口
    // 一个接口可以继承多个接口

    // 定义接口 Alarm
    interface Alarm{
        // 实现 alert 方法
        alert(): any;
    }
    // 定义接口 Light
    interface Light{
        // 实现 lightOn 方法
        lightOn(): void;
        // 实现 lightOff 方法
        lightOff(): void;
    }

    // 定义类 Car, 实现接口 Alarm
    // implements 关键字, 指定继承接口 Alarm
    class Car implements Alarm{
        // 继承后必须实现接口定义的方法
        alert() {
            console.log("alert");
        }
    }

    // 定义类 Car1, 实现接口 Alarm 和 Light
    class Car1 implements Alarm, Light{
        // 必须同时实现接口 Alarm 和 Light 的方法
        alert() {
            console.log("alert");
        }
        lightOff(): void {
            console.log("off");
        }
        lightOn(): void {
            console.log("on");
        }
    }
})()

接口继承接口

(()=>{
    // 接口是一种类型/规范/规则/能力/约束

    // 接口继承接口

    // 定义接口 Alarm
    interface Alarm{
        // 实现 alert 方法
        alert(): any;
    }
    // 定义接口 Light
    interface Light{
        // 实现 lightOn 方法
        lightOn(): void;
        // 实现 lightOff 方法
        lightOff(): void;
    }

    // 接口 LightAlarm 继承 Alarm 和 Light
    interface LightAlarm extends Alarm, Light{
        simple(): void;
    }

    // 定义类 Car1, 实现接口 LightAlarm
    class Car1 implements LightAlarm{
        // 必须同时实现接口 Alarm 和 Light 和 LightAlarm 的方法
        alert() {
            console.log("alert");
        }
        lightOff(): void {
            console.log("off");
        }
        lightOn(): void {
            console.log("on");
        }
        simple(): void{
            console.log("simple")
        }
    }
})()

标签:TypeScript,console,Light,void,接口,alert,入土,Vue3,Alarm
From: https://www.cnblogs.com/chnmig/p/16744209.html

相关文章

  • TypeScript一些见解
    1.TypeScript产生背景:  TypeScript是JavaScript的一个超集,支持ECMAScript6标准(ES6教程)。  TypeScript由微软开发的自由和开源的编程语言。TypeSc......
  • Vue3 reactive和ref响应式问题
    reactive:一般用来接收复杂类型数据。定义后再取出就不是响应式数据了,这个问题解决方法如下:reactive接收钩子函数(遇到的是生命周期函数onMounted钩子函数)中axios请求的数据......
  • [Typescript] 41. Medium - IsUnion
    Implementatype IsUnion,whichtakesaninputtype T andreturnswhether T resolvestoauniontype.Forexample:typecase1=IsUnion<string>//false......
  • 【Vue项目实践】套用github 上的项目(vue3 + Element Plus)运行 可编辑表格
    在Vue3+ElementPlus中生成动态表格gitclonehttps://github.com/kalacloudCode/how-to-build-dynamic-table-in-vue-element-plus.git参考博客:vue3+ElementPlus......
  • 【Vue项目实践】(vue3 + Element Plus)excel 导出
    安装依赖yarnadd--savexlsxfile-saver1、添加导出按钮以及点击事件<el-buttontype="primary"round@click="exportClick">导出表格</el-button>2、在table表格中添加......
  • vue3 pc端页面全屏
    先看效果图: 附上代码: <template><el-button@click="hand">{{fullscreen?'取消全屏':'点击全屏'}}</el-button></template><script>import{ref}......
  • vue3 在setup 使用provide inject 实现响应式传值
    provide与inject主要用于从父组件向子组件传递数据。在2.0我们通常用props接收来自父组件的参数,但是一个要从父子组件传递到孙子组件,这种情况就得从父组件到子组件,再从子......
  • vue3 Element Plus Icon 图标使用
    1. 没有安装element-plus/icons的,安装命令如下:npminstall@element-plus/icons-vue2. main.js引入(我比较懒,全部引入。): import{createApp}from'vue'im......
  • TypeScript学习笔记(四)—— TypeScript提高
    一、类型type1.1、定义Type又叫类型别名(typealias),作用是给一个类型起一个新名字,不仅支持interface定义的对象结构,还支持基本类型、联合类型、交叉类型、元组等任何你需......
  • vue3中element-plus引入ElLoading并修改颜色
    在vue3中引入element-plus的loading跟vue2差别还是有的写法:<scriptsetup>import{ElLoading}from'element-plus'//使用constloading=ref(false)//loading......