TypeScript:11、接口

发布时间:2026/10/3 11:25:26

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用于让类实现接口。接口支持可选属性、只读属性和接口继承。接口描述结构抽象类可以提供公共实现。
延伸阅读

更多相关文章

2026/10/3 18:07:01

Vue3使用格式化的当前日期

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

2026/10/3 18:05:43

SWAT建表日期报错?从根因排查到清洗修复全流程

1. 项目概述&#xff1a;SWAT数据库建表为何会卡在日期上 做SWAT&#xff08;Soil and Water Assessment Tool&#xff09;模型的朋友&#xff0c;应该都对 write swat database tables 这个功能不陌生。它本质上是把整理好的气象、土壤、土地利用等数据&#xff0c;写进SQLi…

2026/10/3 18:05:43

MySQL导出导入避坑手册:mysqldump参数详解与场景实践

最近两年问我要“MySQL导出导入”相关方案的人&#xff0c;比问索引优化的还多。场景翻来覆去就那么几种&#xff1a;搭测试环境要一份生产库的副本、给别的团队导一张表的数据、或者把整个库从旧服务器搬到新实例。第一反应都是在Navicat里点两下&#xff0c;可一旦表数据过GB…

2026/10/3 18:05:43

MySQL复合查询实战:JOIN、子查询与性能优化全解析

说个有点扎心的事实&#xff1a;MySQL用久了你会发现&#xff0c;单表查询写得再溜也只是入门&#xff0c;真正拉开差距的是复合查询。面试聊到MySQL&#xff0c;十个问题里有八个绕不开多表关联、子查询和联合查询&#xff0c;日常报表、统计、数据分析也几乎天天和复合查询打…

2026/10/3 18:05:43

MySQL索引全景长文:B+树原理与联合索引优化实践

1. 为什么 MySQL 索引值得写一篇「全景长文」我做了十几年数据库相关工作&#xff0c;MySQL 索引是被问得最多的一个话题&#xff0c;没有之一。面试会问&#xff0c;线上排查会碰&#xff0c;优化慢查询要动&#xff0c;连写业务代码的同学也经常来咨询&#xff1a;这个字段要…

2026/10/3 18:05:43

线程与进程:从原理到实战,彻底搞懂并发核心概念

线程和进程这两个词&#xff0c;面试题里常青树&#xff0c;搜索引擎里常客&#xff0c;实战代码里更是天天见。我入行那几年&#xff0c;被“进程和线程的区别”问过不下十次&#xff0c;自己也背过八股答案&#xff0c;可真到线上排查问题&#xff0c;才发现教科书那几句“进…

2026/10/3 18:00:43

基于Selenium的12306抢票脚本实战:环境搭建、登录态维持与反爬边界

简介&#xff1a;这是一份基于Selenium的12306自动抢票脚本完整项目资料&#xff0c;面向计算机相关专业的在校学生、教师及企业员工&#xff0c;尤其适合用作毕业设计、课程设计、作业或项目初期立项演示&#xff0c;也适合具备一定Python基础的小白进阶学习。资源包共18个文件…

2026/10/2 8:16:46

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/10/2 18:20:53

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集&#xff1a;Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/3 15:02:19

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/3 0:04:31

国内大学生必备的AI写作辅助软件是哪款?

国内高校学生在论文写作过程中&#xff0c;越来越依赖AI辅助工具提升效率&#xff0c;主流方案以本土化全流程工具为核心&#xff0c;结合通用大模型与专业插件&#xff0c;覆盖选题构思、框架搭建、初稿撰写、查重降重、格式调整等关键环节&#xff0c;本文将深入解析当前主流…

2026/10/3 0:04:31

Codex接入Jev模型完整指南:配置方法、本地部署与踩坑排查

最近不少人在讨论 Codex 搭配 Jev 这套玩法&#xff0c;我一开始没太当回事&#xff0c;直到自己把 Jev 接进 Codex跑了几轮编码任务之后&#xff0c;才明白那些说“直接起飞”的人是怎么想的。Codex 作为工具本身已经够能打了&#xff0c;但模型固定、上下文策略固定&#xff…

2026/10/3 0:04:31

GitHub 热门: NVIDIA/Model-Optimizer

&#x1f44b; Hi&#xff0c;我擅长 AI 大模型应用落地、意识解码与 AI 开发工具链 。 &#x1f4a1; 创业路上&#xff0c;用技术换时间&#xff0c;一起把 AI 变成生产力 &#x1f680; >GitHub 热门: NVIDIA/Model-Optimizer 凌晨两点&#xff0c;你刚把跑通了的 Qwen3.…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑