typescript 中的接口及其用途

news/2024/5/19 17:30:25

接口:定义行为动作的规范

属性接口、函数类型接口、可索引接口、类类型接口、

1、属性接口  对JSON的约束

function printLabel(label: string): void {console.log('printLabel');
}
printLabel('字符串')function printLabel2(labelInfo: { label: string }): void {console.log('printLabel2');
}
printLabel2({ name: 'li' }) // 错误写法
printLabel2({ label: 'li' })

对批量方法传入参数进行约束

接口:行为和动作的规范,对批量方法进行约束

interface FullName {firstName: string; // 注意;结束secondName: string;age?: number // 添加问号为可选属性,可传可不传
}function printName(name: FullName) {// 必须传入对象,必须包含firstName,secondName字段并且都是字符串console.log(name.firstName + name.secondName);
}// 传入的对象必须包含 firstName 和 secondName
const obj = {firstName: '1',secondName: '2',c: 1
}
printName(obj)

 封装ajax接口定义

interface Config {type: string,url: string,data?: string,dataType: string
}function ajax(config: Config) {var xhr = new XMLHttpRequest();xhr.open(config.type, config.url, true)xhr.send(config.data)xhr.onreadystatechange = function () {if (xhr.readyState == 4 && xhr.status == 200) {if (config.dataType == 'json') {JSON.parse(xhr.responseText)} else {console.log('成功', xhr.responseText);}}}
}
ajax({type: 'get',data: 'datadatdatatatat',url: 'http://www.baidu.com',dataType: 'json'
})

2、函数接口类型 对方法传入的参数以及返回值进行约束

// 加密的函数类型接口
interface encrypt {(key: string, value: string): string;
}var md5: encrypt = function (key: string, value: string) {// 模拟操作return key + value
}
console.log(md5('name', 'val'));

 3、可索引接口 数组、对象的约束(不常用)

// ts定义数组的方式
var arr1: number[] = [1, 2]
var arr2: Array<string> = ['1', '2']// 可索引接口对数组的约束
interface UseArr {[index: number]: string
}
var arr3: UseArr = ['1', '2']// 可索引接口对对象的约束
interface UseObj {[index: string]: string
}
var obj: UseObj = { name: '20', wof: '50' }

4、类类型接口 对类的约束 和抽象类相似

interface Animal {name: string;eat(str: string): void;
}class Dog implements Animal {public name: string;constructor(name: string) {this.name = name}eat() {console.log(this.name);}
}
var d = new Dog('小黑')
d.eat()class Cat implements Animal {public name: string;constructor(name: string) {this.name = name}eat(food) {console.log(this.name + food);}
}
var c = new Cat('小花')
c.eat('🐟')

5、接口的扩展 接口可以继承接口

interface Animal {eat(): void;
}
interface Person extends Animal {work(): void;
}
class Progromer {constructor(name: string) {this.name = name}coding(code: string) {console.log(this.name + code);}
}class Web extends Progromer implements Person {constructor(name: string) {super(name)}eat() {console.log(this.name + '吃');}work() {console.log(this.name + '工作');}
}
var w = new Web('丧彪')
w.eat()
w.work()
w.coding('ts')


http://www.mrgr.cn/p/15758076

相关文章

python利用stable-diffusion-webui画图

官网 https://github.com/AUTOMATIC1111/stable-diffusion-webui 免python版本 https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.0.0-pre 先把源码,克隆到本地,conda创建一个虚拟环境 git clone https://github.com/AUTOMATIC1111/stable-diffusio…

BOSHIDA AC/DC电源模块的设计与实现技巧

BOSHIDA AC/DC电源模块的设计与实现技巧 AC/DC电源模块是一种常用的电源模块,用于将交流电转换为直流电,为各种电子设备提供电力。在设计和实现AC/DC电源模块时,有一些重要的技巧需要注意。 首先,选择适当的拓扑结构对于AC/DC电源模块的性能至关重要。常见的拓扑结构包括线…

振弦采集仪在岩土工程监测中的故障排除和维护要点

振弦采集仪在岩土工程监测中的故障排除和维护要点 河北稳控科技振弦采集仪在岩土工程监测中是一种常用的测量设备,通过测量振弦的振动频率来判断土体的力学性质和变形情况。然而,如果振弦采集仪出现故障,则会影响监测工作的正常进行。因此,掌握振弦采集仪的故障排除和维护要…

汇编语言——比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示MATCH, 不相同则显示NO MATCH

CMPS 串比较指令&#xff1a; CMPS SRC, DST CMPSB &#xff08;字节&#xff09; CMPSW &#xff08;字&#xff09; 执行操作&#xff1a; ((SI)) - ((DI)) 根据比较结果置条件标志位&#xff1a;相等 ZF1&#xff1b;不等 ZF0 字节操作&#xff1a;(SI)←(SI)1, (DI)←(DI…

Mysql-事务的基本特性和隔离级别

0.背景 在数据库中,事务是一组数据库操作,可以将事务操作视为一个基本的工作单元。 1.事务的基本特性 事务的基本特性“ACID” 对于事务呢,就是这一组sql操作,要确保ACID这4个基本特性。 哎,八股文不好背,我记忆方式是:一元吃个(原持隔)原子性(Atomicity):事务中的…

AWS宣布推出Amazon Q :针对商业数据和软件开发的生成性AI助手

亚马逊网络服务&#xff08;AWS&#xff09;近日宣布推出了一项名为“Amazon Q”的新服务&#xff0c;旨在帮助企业利用生成性人工智能&#xff08;AI&#xff09;技术&#xff0c;优化工作流程和提升业务效率。这一创新平台的推出&#xff0c;标志着企业工作方式的又一次重大变…

安卓手机原生运行 ARM Ubuntu 24.04 桌面版(一)

本篇文章&#xff0c;聊一聊尝试让安卓手机原生运行 Ubuntu&#xff0c;尤其是运行官方未发布过的 ARM 架构的 Ubuntu 24.04 桌面版本。 写在前面 最近的几篇文章&#xff0c;都包含了比较多的实操内容、需要反复的复现验证&#xff0c;以及大量的调试过程&#xff0c;为了不…

使用pycnblog一键拖拽同步markdown和图片

博客园一键拖拽同步markdown和图片 原因本地使用Typora写完文档,上传博客园时,图片不能同步解决办法 参考链接博客园上传markdown文件准备工作下载工具pycnblog安装Python3pip install pyyaml配置config.yaml blog_url: https://rpc.cnblogs.com/metaweblog/testblog blog_id…

|Python新手小白中级教程|第二十三章:列表拓展之——元组

文章目录 前言一、列表复习1.索引、切片2.列表操作字符3.数据结构实践——字典 二、探索元组1.使用索引、切片2.使用__add__((添加元素&#xff0c;添加元素))3.输出元组4.使用转化法删除元组指定元素5.for循环遍历元组 三、元组VS列表1.区别2.元组&#xff08;tuple&#xff0…

blazor优雅的方式导入组件相关的js脚本

基本的组件导入方式为:1 await JsRuntime.InvokeVoidAsync("import", $"XXXXX.js");优雅的组件导入方式:1 await JsRuntime.ImportAsync<DocEditor>();这种优雅一点不难,只需要写一个扩展方法,把他放在任意地方并且导入命名空间,或者放到和项目…

企业防泄露如何做到安全有效

随着信息时代的急速演进&#xff0c;企业的重要商业机密越来越多地以电子文档的形式存在。常见的CAD图纸、Office文档承载着公司的核心价值和竞争优势&#xff0c;同时也面临着前所未有的数据安全威胁。确保这些重要信息的文档安全已经成为每个企业必须直面的挑战。在这样的背景…

公司数据防泄漏方案分享|防泄密软件有哪些

企业的数据安全是公司稳定发展的必要条件&#xff0c;如何防止内部数据泄露企业的数据安全是公司稳定发展的必要条件&#xff0c;如何防止内部数据泄露已经成为了一个亟待解决的问题。在这个信息时代&#xff0c;数据已经成为企业最重要的资产之一&#xff0c;因此&#xff0c;…

02 冒泡排序

02 冒泡排序1.冒泡排序的含义每次交换两个,把大的扔在末尾, 每一轮可以确定末尾是最大的,然后是次尾部,依次进行下去。 老师:每次都是搞定最大的数,最大的数往右边冒。再接着搞定下一轮,直到整个数组有序。 图示:2.示例代码 def bubble_sort(arr):# if not arr or len(…

数据库(MySQL)—— DQL语句(基本查询和条件查询)

数据库&#xff08;MySQL&#xff09;—— DQL语句&#xff08;基本查询和条件查询&#xff09; 什么是DQL语句基本查询查询多个字段字段设置别名去除重复记录 条件查询语法条件 我们今天进入MySQL的DQL语句的学习&#xff1a; 什么是DQL语句 MySQL中的DQL&#xff08;Data Q…

一站式生活新体验:可视化技术让公寓商场综合楼焕新生

可视化技术将传统的居住与购物空间进行了完美融合。在这里,你不再需要为了购买生活用品而特地跑到远处的商场,也不再需要为了找一家心仪的餐厅而四处奔波。通过可视化技术,你可以轻松查看到楼内的各个商铺、餐厅、健身房等配套设施的分布情况,一键导航直达目的地,享受一站…

SAP生产订单常用状态以及

常用系统状态&#xff1a; 状态 状态 CRTD 已建立 REL 已核发 CNF 已确认 PCNF 已部份确认 DLV 已交货 DLT 删除指示码 LKD 已锁住 TECO 技术完成 GMPS 已发料 关闭 关闭 工单结案前的生产报表分析 路径:后勤系统- 生产- 现场控制- 信息系统-订单信息系…

《无尽冬日》上线不足一月微信小游戏销售夺冠

易采游戏网5月7日消息&#xff0c;小游戏市场近期掀起了一股不小的波澜&#xff0c;世纪华通旗下的点点互动推出的小游戏《无尽冬日》成功登顶微信小游戏畅销榜&#xff0c;这一成绩无疑让人眼前一亮。上线仅29天&#xff0c;就超越了霸榜数月的《寻道大千》&#xff0c;这样的…

MySQL-基础语法教程及事务和索引

基础解析: select 要几列 where要几行,用来对行进行过滤,加where,查出来的行变少 *代表所有的列 增删改查UPDATE SET 更新 UPDATE scores SET score=300 WHERE NAME="王大" AND kemu="语文" delete语法 DELETE FROM scores WHERE ID =11#删除整张表里的…

H3C Private VLAN实验

Private VLAN 实验1 实验需求 按照图示配置 IP 地址 在 SW1 上配置 Private VLAN&#xff0c;Primary VLAN 为 Vlan30&#xff0c;Secondary VLAN 为 Vlan10 和 Vlan20 SW2 通过 Vlan100 下行连接 SW1&#xff0c;要求 PC3 和 PC4 都能以 Vlan100 访问 PC5 在 SW1 上配置 …

MySQL-基础语法教程

基础解析: select 要几列 where要几行,用来对行进行过滤,加where,查出来的行变少 *代表所有的列 增删改查UPDATE SET 更新 UPDATE scores SET score=300 WHERE NAME="王大" AND kemu="语文" delete语法 DELETE FROM scores WHERE ID =11#删除整张表里的…