TypeScript接口——interface

news2024/12/19 13:11:28

目录

一、接口概述:

二、接口类型介绍:

 1、属性接口:

2、 函数接口:

3、可索引接口:

(1)可索引接口约束数组示例:

(2) 可索引接口约束对象示例:

4、类类型接口:

三、接口的扩展:


一、接口概述:

        首先说明一点,接口是TypeScript的一部分,它不能转换成JavaScript代码段。

        其次,接口是一种抽象的东西,在面向对象的编程中,接口是一种规范的定义,主要起到约束、限定的作用。因此,它的属性字段不可以进行初始化赋值,方法字段不可以有具体的实现。

        接口不关心内部的状态数据,也不关心内部方法的实现细节,它只是规定类、对象必须提供某些属性和方法以满足接口的需求。        

        根据接口的在不同情况下的用途,可以将接口分为:属性接口、函数接口、可索引接口、类类型接口。同时接口还可以进行扩展,可以通过接口之间的继承机制来实现对其进行扩展。

        接口是一个定义,抽象的。我们一般会通过类来对接口进行具体的实现。

二、接口类型介绍:

        接口是比较灵活的,我们根据接口的用途可以将接口分为:属性接口、函数接口、可索引接口、类类型接口。

 1、属性接口:

        我们在编程过程中可以定义一个接口,接口内只有属性字段,我们可以成为该接口为一个属性接口。同时我们可以对于这些属性给与一些限定,例如属性的可选性“?”、属性的只读性“readonly”等。

 示例:假设有一个函数需要接收指定类型的参数。

        如果上述函数接收的对象属性不仅仅包含“name” 、"age",还有“gender”、“address”、"phone"等更多的属性呢?如果不仅仅只有 printPersInfo 这一个函数的参数要求参数是特定的类型呢?

        这个时候我们就可以定义一个属性接口,利用接口来约束参数。

2、 函数接口:

        函数接口主要用于约束函数的参数和返回值。要求该函数必须传入指定类型的参数,并且得到指定类型的返回值。

3、可索引接口:

        可索引接口用于数组或者对象的约束。

// 定义了一个可索引接口
interface IterTemp {
    [attrName: type1]: type2,
}

/*
* 对于数组而言:
* attrName 表示数组的索引
* type1 表示数组索引的类型
* type2 表示索引值,即数组元素的类型。(索引 <==\==> 索引值)
*
* 对于对象而言:
* attrName 表示对象的属性
* type1 表示的对象属性类型
* type2 表示对象的属性值类型。(属性 <==\==> 属性值)
*/

// type只能是string或者number类型。

(1)可索引接口约束数组示例:

(2) 可索引接口约束对象示例:

错误示例:

正确示例: 

 

 

4、类类型接口:

        类类型的接口类似于抽象类,实际上就是把“属性接口”和“函数接口”同时使用。类如果需要对接口进行实现,需要使用“implements”关键字。

 

三、接口的扩展:

        接口可以通过继承来进行扩展。对接口进行实现的时候必须要实现所有接口定义的约束条件。

        接口的继承使用extends关键字。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】numpy矩阵运算大全

文章目录前言0 遇事不决&#xff0c;先查官网&#xff0c;查着查着就查熟了1 矩阵运算及其必要性2 矩阵的创建2.1 普通矩阵2.2 特殊矩阵3 矩阵的索引3.1 str, list, tupple的索引3.2 numpy索引4 矩阵的运算4.1 通用函数与广播机制4.3 矩阵乘法4.4 矩阵求逆4.5 矩阵转置4.6 向量…

SpringBoot整合mybatis-plus 实现增删改查和分页查询

SpringBoot整合mybatis-plus 实现增删改查和分页查询整体的运行图片&#xff1a;一、环境搭建&#xff1a;1、依赖2、application.yml文件3、数据库二、实体类&#xff1a;三、数据层开发——基础CRUD四、业务层开发——分页功能制作4.1分页配置类 configuration4.2service接口…

【Node.js】模块化学习

Node.js教学 专栏 从头开始学习 目录 模块化的基本概念 什么是模块化 现实中的模块化 编程领域中的模块化 模块化规范 Node.js中的模块化 Node.js中模块的分类 加载模块 Node.js中的模块作用域 什么是模块作用域 模块作用域好处 向外共享模块作用域中的成员 module对象 modu…

第二站:分支与循环(终幕)一些经典的题目

目录 一、计算n的阶乘 1.一般解法 2.优化不能表示出较大数的阶乘 二、 计算 1!2!3!……10! 1.循环嵌套解法 2.一次循环解法(优化计算时间) 三、在一个有序数组中查找具体的某个数字n 1.遍历查找 2.二分查找算法&#xff08;优化了查找时间&#xff09; 四、编写代码&am…

IDEA Out of memory 问题

文章目录1. 前提2. 问题记录与解决方案1. 前提 阅读本文之前&#xff0c;读者要首先把 Out of memory 这个问题的解决方案多搜几个帖子&#xff0c;先按照其他帖子的解决方案&#xff08;修改配置文件Xmx属性等&#xff09;尝试一遍&#xff0c;不能解决再参考本文。 本文所描…

前端小游戏——植物大战僵尸

给大家分享一个植物大战僵尸网页游戏源代码&#xff0c;感兴趣的小伙伴可收藏学习 &#x1f449;完整源码 文章目录⌛️效果展示⌛️游戏介绍⌛️游戏内容&#xff08;1&#xff09;冒险模式&#xff08;2&#xff09;小游戏⌛️图片资源⌛️代码展示&#xff08;1&#xff09;…

【黑猩猩算法】基于加权反对技术和贪婪搜索进化黑猩猩优化算法求解多模态工程问题附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

终于拿到了阿里P8架构师分享的JCF和JUC源码分析与实现笔记java岗

时代的一粒尘&#xff0c;落在每个人身上&#xff0c;就是一座山”。 时代更迭变换&#xff0c;我们好像都知道今天与昨天不同&#xff0c;又好像肉眼看不出哪里不同。 但其实它就正在以各种各样的方式体现在每一个普通人身上。 疫情爆发三个月的时间&#xff0c;截止2020年…

~外中断~

目录 一、接口芯片和端口 二、外中断信息 三、PC机键盘的处理过程 一、接口芯片和端口 外设的输出不直接送入内存和CPU&#xff0c;而是送入相关的接口芯片的端口中&#xff1b;CPU向外设的输出也不是直接送入外设&#xff0c;而是先送入端口&#xff0c;再由相关的芯片送到…

C语言程序设计--火车订票系统

任务要求: 创建一个火车票管理系统&#xff0c;功能包括&#xff1a; &#xff08;1&#xff09;录入班次信息(信息用文件保存),可不定时地增加班次数据 &#xff08;2&#xff09;浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班 次的发车时间,则…

js中map()的使用详解

引入&#xff1a; 有网友有如下困惑&#xff1a; map是数组的方法&#xff0c;有一个参数&#xff0c;参数是一个函数&#xff0c;函数中有3个参数 参数1&#xff1a;item必须。当前元素的值 参数2&#xff1a;index&#xff0c;可选。当前元素在数组中的索引值 参数3&#xff…

CentOS 7迁移Anolis OS 7 ——筑梦之路

迁移注意事项 Anolis OS 7生态上和依赖管理上保持跟CentOS7.x兼容&#xff0c;一键式迁移脚本centos2anolis.py&#xff0c;实现CentOS7.x到Anolis OS 7的平滑迁移。 使用迁移脚本前需要注意如下事项&#xff1a; 迁移涉及到软件包的重新安装&#xff0c;是不可逆过程&#…

BBR/CUBIC 共存时的 buffer 挤兑

BBR 与 CUBIC 共存时的收敛图&#xff0c;理论情况&#xff1a; 理论上 BBR 不会挤占 buffer&#xff0c;inflight 保持为恒定的 BDP。 但 BBR 的 inflight 做不到恒定&#xff0c;多流共存时&#xff0c;依然会 “主动占用 buffer” 而相互挤兑带宽&#xff0c;而该行为是必须…

java - 序列化

钱应该怎么花 前几天看到一个新闻&#xff0c;一女子打拼了5年攒了30万买房钱&#xff0c;最后因为意外被一场突如其来的大火烧了&#xff0c;经过多家银行&#xff0c;长达4小时的鉴定&#xff0c;挽回了15万损失。 还看到一个新闻&#xff0c;老人攒5000元钱遭虫蛀烂&#…

「Linux」400行纯C语言代码带你「手撕线程池」

线程池的基本概念 不管线程池是什么东西&#xff01;但是我们必须知道线程池被搞出来的目的就是&#xff1a;提高程序执行效率而设计出来的&#xff1b; 了解了线程池的目的后&#xff1a;我们就可以开始理解线程池&#xff1a; 首先回答一个问题&#xff1a;为什么会有线程…

python文件的读取

python文件的读取1.文件的读取1.read() 读取整个文件2.readline() 每次读取一行文件3. readlines() 读取文件的所有行2.文件的写入1.以"x"方式打开文件2.以"a"方式打开文件3.以"w"方式打开文件3.文件的删除4.Excel表数据的读取1.直接读取2.通过p…

SQL Server2019配置always on高可用图文步骤

准备工作 首先需要准备好Windows Server上的故障转移群集&#xff0c;步骤可以参考上一篇。 https://blog.csdn.net/u012869793/article/details/127560270?spm1001.2014.3001.5501 然后服务器上安装好SqlServer&#xff0c;我这里安装的是2019。 正文 勾选启用Always ON可…

牛客竞赛每日俩题 - Day7

目录 经典01背包问题 二叉树遍历与构造&#xff08;考研重点&#xff09; 经典01背包问题 求正数数组的最小不可组成和_百度笔试题_牛客网 参考大佬题解&#xff1a; 动态规划&#xff1a;01背包问题(无物品价值)&#xff0c;思想相同&#xff0c;题目最终要求有些变化 min为…

【机器人定位引导中的机器视觉技术】

文章目录手眼标定原理手眼标定流程定位引导1、单相机抓取定位引导2、单相机纠偏定位引导3、上下相机对位引导随着工业生产中对自动化的要求越来越高&#xff0c;视觉技术已被广泛引入工业机器人行业&#xff0c;具备视觉的工业机器人能更快、更准、更灵活地完成定位抓取、对位组…