尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
TypeScript总结:16、面向对象速查
面向对象速查TypeScript 面向对象部分可以归纳为四个关键词类、封装、继承和抽象。接口与泛型则进一步帮助我们描述结构和复用类型逻辑。一、类的基本模板classPerson{name:string;age:number;constructor(name:string,age:number){this.namename;this.ageage;}sayHello():void{console.log(大家好我是this.name);}}constpersonnewPerson(孙悟空,18);person.sayHello();成员作用属性保存对象数据构造函数创建实例时初始化数据方法描述对象行为this表示当前实例new创建类的实例二、访问修饰符修饰符当前类子类类外部public可以访问可以访问可以访问protected可以访问可以访问不可以访问private可以访问不可以访问不可以访问示例classUser{publicname:string;protectedrole:string;privatepassword:string;constructor(name:string,role:string,password:string){this.namename;this.rolerole;this.passwordpassword;}}建议默认公开的成员才使用public。只允许子类使用的成员使用protected。内部实现细节使用private。三、readonly、getter 和 setterreadonlyclassUser{readonlyid:number;constructor(id:number){this.idid;}}readonly属性初始化后不能重新赋值。getter 和 setterclassPerson{private_name:string;constructor(name:string){this._namename;}getname():string{returnthis._name;}setname(value:string){if(value.trim()){this._namevalue;}}}记忆方式get读取属性。set修改属性。四、静态成员classMathTools{staticPI3.1415926;staticsum(a:number,b:number):number{returnab;}}console.log(MathTools.PI);console.log(MathTools.sum(1,2));静态成员属于类本身通过类名访问不需要创建实例。五、继承和方法重写classAnimal{constructor(publicname:string){}run():void{console.log(this.name正在跑);}}classDogextendsAnimal{bark():void{console.log(this.name在汪汪叫);}overriderun():void{console.log(狗正在跑);}}constdognewDog(旺财);dog.run();dog.bark();关键语法语法作用extends继承父类super(...)调用父类构造函数super.method()调用父类方法override明确表示重写父类成员六、抽象类abstractclassAnimal{abstractrun():void;bark():void{console.log(动物在叫);}}classDogextendsAnimal{run():void{console.log(狗在跑);}}抽象类的特点不能直接实例化。可以包含普通属性和普通方法。可以包含抽象方法。子类必须实现抽象方法。七、接口描述对象结构interfacePerson{name:string;sayHello():void;}functiongreet(person:Person):void{person.sayHello();}类实现接口classStudentimplementsPerson{constructor(publicname:string){}sayHello():void{console.log(我是this.name);}}implements只负责检查结构不会自动生成接口中的属性和方法。八、泛型泛型函数functionidentityT(value:T):T{returnvalue;}identity(100);identity(hello);泛型类classBoxT{constructor(publicvalue:T){}}constnumberBoxnewBox(100);conststringBoxnewBox(hello);泛型约束interfaceHasLength{length:number;}functiongetLengthTextendsHasLength(value:T):number{returnvalue.length;}九、接口、抽象类和普通类的区别类型主要作用能否包含具体实现能否直接实例化接口描述结构和契约不能不能抽象类提供通用模型和部分实现可以不能普通类创建具体对象可以可以十、面向对象设计建议类负责描述对象状态和行为。不要把所有属性都公开优先保护内部状态。父类放公共逻辑子类放具体差异。只需要约束结构时优先考虑接口。需要共享实现时再考虑抽象类或继承。重复的类型逻辑优先使用泛型。十一、本章小结类解决对象创建和行为组织问题。封装解决属性访问和数据保护问题。继承解决公共逻辑复用问题。抽象类解决通用模型和强制实现问题。接口解决结构约束问题。泛型解决类型安全的代码复用问题。
RELATED

相关推荐

WorkBuddy 机电一体化进阶:需求、结构、电子、固件终于不再各说各话

WorkBuddy 机电一体化进阶:需求、结构、电子、固件终于不再各说各话

WorkBuddy 机电一体化进阶:需求、结构、电子、固件终于不再各说各话 [!NOTE] 跨专业项目失败往往不是某个文件不会做,而是各自使用不同版本的接口定义。本课建立一份系统接口合同,让四条工作流共享同一事实源。 本课不会用“AI 一键完成”制造错觉,而是把 WorkBuddy、YAML、…

📅 2026/9/13 7:33:24
01-Qt基础-C++基础回顾

01-Qt基础-C++基础回顾

C 基础回顾&#xff08;Qt 实战版&#xff09; Qt 是 C 框架&#xff0c;写 Qt 之前必须把 C 核心概念过一遍。本章只讲 Qt 开发中天天用到的部分&#xff0c;每个知识点都配 Qt 场景示例。 一、类与对象 1.1 基本语法 #include <QString>/*** brief 用户类&#xff0c…

📅 2026/9/18 5:22:07
从OpenClaw迁移到NanoClaw:轻量级AI智能体平台部署与优化实践

从OpenClaw迁移到NanoClaw:轻量级AI智能体平台部署与优化实践

1. 从OpenClaw到NanoClaw&#xff1a;一次AI智能体平台的主动迁移最近在折腾本地AI智能体部署的朋友&#xff0c;估计对OpenClaw这个名字都不陌生。它一度是很多开发者入门AI智能体&#xff08;Agent&#xff09;的首选&#xff0c;凭借相对简单的部署流程和还算丰富的功能&…

📅 2026/9/9 23:54:29
MORE NEWS

更多资讯

📰

Oransim路线图前瞻:从v0.2到因果基础模型,闭环AI媒体投放与百万级智能体集群的完整规划

【免费下载链接】oransim Causal Digital Twin for Marketing at Scale Predict any marketing decision before you spend a dollar. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/or/oransim 点击查看 免费下载 Oransim 是一个开源的营销因果数字孪生框架&#xf…

📰

OmniDrive是什么?一款让MT1959光驱通吃游戏光盘的开源固件破解工具完整解析

【免费下载链接】OmniDrive 项目地址&#xff1a; https://gitcode.com/gh_mirrors/omn/OmniDrive 点击查看 免费下载 OmniDrive 是一款面向 MediaTek MT1959 芯片光驱的开源固件修改工具&#xff0c;专为 Hitachi-LG Data Storage 光驱打造。刷入它之后&#xff0c;普通光驱就…

📰

ROS导航/odom轨迹可视化:从rosbag离线绘制到matplotlib实时显示

做机器人导航调试的时候&#xff0c;除了在 rviz 里盯着机器人实时跑&#xff0c;我经常需要把/odom发出来的轨迹单独拉出来画成一张图——比如比赛复盘、实验报告、论文插图&#xff0c;或者单纯想对比两版参数谁的路径更平滑。这个需求看着不起眼&#xff0c;真动手写的时候&…

📰

libssh2在Windows下的编译、链接与运行避坑指南

简介&#xff1a;libssh2 1.7.0的Windows开发包为使用Visual Studio 2015的C/C开发者提供了完整的SSH/SFTP集成支持。其中包含编译好的静态库与动态链接库&#xff0c;以及配套头文件&#xff0c;解决在Win10环境下开发时为库文件缺失或版本不匹配而烦恼的问题。压缩包共6个文件…

📰

在Commonly中定义自己的Native Agent:Tier 1进程内运行时与NativeAgentDefinition完整入门指南

【免费下载链接】commonly Open-source room for humans cross-vendor AI agents. Every agent gets its own name, memory, skills, and workstation. Any runtime, your infra — no per-agent fees. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/co/commonly 点击…

📰

Zint+Zlib+Libpng预编译库集成指南:依赖链与避坑要点

简介&#xff1a;这套面向 Windows 开发者的预编译库包&#xff0c;内含 Zint、Zlib 与 Libpng 三大开源库的完整编译产物&#xff0c;专为 Visual Studio 2015 环境设计&#xff0c;提供 32 位与 64 位、Debug 和 Release 版本&#xff0c;可直接集成到项目中实现条形码/二维码…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬