TypeScript:11、接口
接口接口用于描述对象或类应该具备的结构。它只规定属性和方法的形状不负责创建实例也不提供具体实现。一、接口的基本语法interfacePerson{name:string;sayHello():void;}这个接口要求对象必须包含name字符串属性。sayHello方法。二、使用接口检查对象接口可以作为函数参数类型interfacePerson{name:string;sayHello():void;}functiongreet(person:Person):void{person.sayHello();}greet({name:孙悟空,sayHello():void{console.log(Hello我是this.name);}});传入的对象只要满足接口结构就可以作为Person使用。三、接口的结构化类型检查TypeScript 关注对象是否具有需要的属性和方法而不要求对象必须来自某一个具体的类。这种方式叫结构化类型系统。interfaceUser{name:string;age:number;}constuser{name:孙悟空,age:18,address:花果山};functionprintUser(value:User):void{console.log(value.name:value.age);}printUser(user);user包含User要求的属性因此可以传给printUser。四、类实现接口使用implements让类实现接口interfacePerson{name:string;sayHello():void;}classStudentimplementsPerson{constructor(publicname:string){}sayHello():void{console.log(大家好我是this.name);}}conststudentnewStudent(小明);student.sayHello();类实现接口时必须包含接口中声明的所有属性和方法。五、接口中的可选属性使用?可以声明可选属性interfaceConfig{host:string;port?:number;}constconfigA:Config{host:localhost};constconfigB:Config{host:localhost,port:3000};可选属性可能不存在使用时要考虑undefinedfunctionprintConfig(config:Config):void{if(config.port!undefined){console.log(config.port);}}六、接口中的 readonly 属性使用readonly可以让接口属性只能读取interfaceUser{readonlyid:number;name:string;}constuser:User{id:1001,name:孙悟空};// 编译错误id 是只读属性// user.id 1002;七、接口继承接口接口可以通过extends继承其他接口interfaceAnimal{name:string;}interfaceDogextendsAnimal{bark():void;}constdog:Dog{name:旺财,bark():void{console.log(汪汪叫);}};Dog同时拥有Animal的属性和自己的方法。八、接口和类型别名的区别接口和类型别名都可以描述对象结构但使用习惯略有不同对比项interfacetype描述对象结构适合适合声明类的实现契约常用也可以使用扩展方式extends交叉类型联合类型不直接使用更方便元组和字面量可以间接描述更方便示例typeIDnumber|string;typePoint[number,number];九、接口和抽象类的区别对比项接口抽象类是否可以包含具体实现不包含可以包含是否可以有构造函数不可以可以是否可以保存实现逻辑不可以可以一个类可以实现多个可以实现多个接口通常只能继承一个类主要作用描述结构和契约提供基础类和通用逻辑十、常见问题1. implements 不会自动生成方法implements只负责检查类是否满足接口不会自动把方法添加到类中interfacePerson{sayHello():void;}classStudentimplementsPerson{// 必须自己实现 sayHellosayHello():void{console.log(Hello);}}2. 接口不能直接创建对象接口只存在于类型检查阶段不能这样使用// const person new Person();应该创建实现接口的具体类或者创建符合接口结构的对象字面量。十一、本章小结接口用于描述对象或类的结构。对象只要满足接口要求就可以通过类型检查。implements用于让类实现接口。接口支持可选属性、只读属性和接口继承。接口描述结构抽象类可以提供公共实现。

相关新闻

Vue3使用格式化的当前日期

Vue3使用格式化的当前日期

在Vue 3中&#xff0c;初始化一个变量today为当前日期&#xff0c;并且格式化为yyyy-mm-dd格式&#xff0c;可以通过多种方式实现。以下是几种常见的方法&#xff1a; 格式化当前日期 方法1&#xff1a;使用JavaScript的Date对象和模板字符串 <script setup> import { re…

2026/10/17 8:06:41 阅读更多 →
为什么你的Ryzen只发挥了一半性能?免费开源的SMUDebugTool逐核调试指南

为什么你的Ryzen只发挥了一半性能?免费开源的SMUDebugTool逐核调试指南

为什么你的Ryzen只发挥了一半性能&#xff1f;免费开源的SMUDebugTool逐核调试指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目…

2026/10/17 8:46:15 阅读更多 →
3步为联想笔记本瘦身:LenovoLegionToolkit软件禁用功能上手实录

3步为联想笔记本瘦身:LenovoLegionToolkit软件禁用功能上手实录

3步为联想笔记本瘦身&#xff1a;LenovoLegionToolkit软件禁用功能上手实录 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit …

2026/10/16 14:27:30 阅读更多 →

最新新闻

NLM非局部均值滤波原理与MATLAB图像去噪实现及参数调优

NLM非局部均值滤波原理与MATLAB图像去噪实现及参数调优

简介&#xff1a;非局部均值滤波是图像降噪领域经典算法&#xff0c;这套MATLAB程序包专为学习或实现该算法的开发者与研究生准备&#xff0c;可帮助快速理解原理并完成代码落地。压缩包共十个文件&#xff0c;包含两个程序源文件、七张标准测试图和一个文档说明&#xff0c;整…

2026/10/18 9:59:37 阅读更多 →
LLM Inference 实战:从 prefill 到 decode,用 TaoToken 统一 Key 跑通 KV cache 与 continuous batching 验证

LLM Inference 实战:从 prefill 到 decode,用 TaoToken 统一 Key 跑通 KV cache 与 continuous batching 验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 9:59:37 阅读更多 →
无限畅用Cursor编辑器,四步轻松搞定!TaoToken统一Key接入实战

无限畅用Cursor编辑器,四步轻松搞定!TaoToken统一Key接入实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 9:59:37 阅读更多 →
纯CSS3 Loading文字加载动效:零JS实现逐字弹出动画原理与实战

纯CSS3 Loading文字加载动效:零JS实现逐字弹出动画原理与实战

简介&#xff1a;一款纯 CSS3 实现的 Loading 文字加载动效源码&#xff0c;面向具备前端基础或网页交互设计经验的开发者&#xff0c;尤其适合在网站初次加载、接口请求等待以及图片懒加载等场景使用。核心效果完全依靠层叠样式表动画属性驱动&#xff0c;无需额外引入大型动画…

2026/10/18 9:59:37 阅读更多 →
RTP.NET:.NET平台实现实时音视频传输的协议封装与实践

RTP.NET:.NET平台实现实时音视频传输的协议封装与实践

简介&#xff1a;RTP.NET 是一个基于 .NET 框架的实时传输协议库&#xff0c;帮助 C# 开发者在 VoIP、视频会议、流媒体等场景中实现音视频等时间敏感数据的网络发送与接收。库内封装了 RTPSession 会话管理、RTPParticipant 与会者标识、数据包化、负载类型识别等功能&#xf…

2026/10/18 9:59:37 阅读更多 →
VGG骨干+轻量时序注意力:视频理解模型设计实战拆解

VGG骨干+轻量时序注意力:视频理解模型设计实战拆解

做视频理解绕不开一个老问题&#xff1a;怎么在空间特征之上合理地建模时间关系。这个“VGG改进”系列我写了几十篇&#xff0c;大部分都集中在图像场景、网络剪枝和重参数化上&#xff0c;直到第23篇我才正式把方向切到视频。今天这篇就用一个实战设计笔记的方式&#xff0c;完…

2026/10/18 9:58:37 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →