当前位置: 首页 > ai >正文

TypeScript:类

一、基本概念

TypeScript 类是基于 ES6 类的语法扩展,增加了类型注解和访问修饰符等特性,提供了更强大的面向对象编程能力。

二、基本语法

class Person {name: string;age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}greet() {return `Hello, my name is ${this.name}`;}
}

三、类的主要特性

1. 访问修饰符

  • public (默认):成员在任何地方都可访问

  • private:只能在类内部访问

  • protected:可在类及其子类中访问

class Animal {public name: string;private secret: string;protected age: number;
}

2. 只读属性

class Person {readonly birthDate: Date;
}

3. 参数属性

简化属性声明和赋值的语法:

class Person {constructor(public name: string, private age: number) {}// 等同于声明name和age并在构造函数中赋值
}

4. 存取器 (getters/setters)

class Employee {private _salary: number;get salary(): number {return this._salary;}set salary(newSalary: number) {if (newSalary >= 0) {this._salary = newSalary;}}
}

5. 静态成员

class Grid {static origin = { x: 0, y: 0 };static calculateDistance(point: {x: number, y: number}) {// ...}
}

6. 抽象类

abstract class Animal {abstract makeSound(): void; // 必须在派生类中实现move(): void {console.log("moving...");}
}

7. 类与接口

类可以实现接口:

interface ClockInterface {currentTime: Date;setTime(d: Date): void;
}class Clock implements ClockInterface {currentTime: Date = new Date();setTime(d: Date) {this.currentTime = d;}
}

四、继承

class Animal {move(distance: number = 0) {console.log(`Moved ${distance}m`);}
}class Dog extends Animal {bark() {console.log("Woof! Woof!");}
}

五、方法重写

class Animal {move(distance: number = 0) {console.log(`Moved ${distance}m`);}
}class Snake extends Animal {move(distance: number = 5) {console.log("Slithering...");super.move(distance);}
}

六、高级特性

1. 类类型

类既可以作为值使用,也可以作为类型使用:

class Greeter {greeting: string;constructor(message: string) {this.greeting = message;}
}let greeter: Greeter = new Greeter("world");

2. 构造函数类型

class Point {x: number;y: number;
}let PointConstructor: typeof Point = Point;
let point: Point = new PointConstructor();

3. 装饰器 (实验性特性)

@sealed
class Greeter {greeting: string;constructor(message: string) {this.greeting = message;}@enumerable(false)greet() {return "Hello, " + this.greeting;}
}

七、与ES6类的区别

  1. TypeScript类有类型注解

  2. 支持访问修饰符(public/private/protected)

  3. 支持抽象类和抽象方法

  4. 支持参数属性

  5. 支持接口实现检查

八、最佳实践

  1. 优先使用private/protected限制成员访问

  2. 考虑使用抽象类定义通用行为

  3. 合理使用接口来定义类的公共契约

  4. 对于简单的数据对象,考虑使用接口而不是类

TypeScript的类提供了强大的面向对象编程能力,同时保持了JavaScript的灵活性,是构建大型应用的理想选择。

http://www.xdnf.cn/news/6283.html

相关文章:

  • 康复训练:VR 老年虚拟仿真,趣味助力恢复​
  • 计算机网络--第一章(上)
  • C语言_自动义类型:联合和枚举
  • CK3588下安装linuxdeployqt qt6 arm64
  • 前端流行框架Vue3教程:17. _组件数据传递
  • 最新版VSCode通过SSH远程连接Ubuntu 16.04等旧版Linux的方法
  • 数据结构(九)——排序
  • Coze 实战教程 | 10 分钟打造你的AI 助手
  • Flutter——数据库Drift开发详细教程(六)
  • 【python基础知识】Day26 函数
  • Digi XBee XR 系列介绍
  • 如何在Firefox火狐浏览器里-安装梦精灵AI提示词管理工具
  • Spring MVC 接口的访问方法如何设置
  • Nginx与Tomcat负载均衡集群配置指南
  • IntelliJ IDEA 集成AI编程助手全解析:从Copilot到GPT-4o Mini的实践
  • 力扣.1471数组的k个最强值,力扣.1471数组的k个最强值力扣1576.替换所有的问号力扣1419.数青蛙​编辑力扣300.最长递增子序列
  • Spring框架核心技术深度解析:JDBC模板、模拟转账与事务管理
  • 【Vue】CSS3实现关键帧动画
  • 快速通关单链表秘籍
  • GPU与NPU异构计算任务划分算法研究:基于强化学习的Transformer负载均衡实践
  • Java实现MinIO上传PDF文件并配置浏览器在线打开及vue2上传页面
  • PCIe数据采集系统
  • 解决:npm install报错,reason: certificate has expired
  • 【python实用小脚本-63】每天花费2小时修复黑白照片,Python一键转换,节省90%时间(建议收藏)
  • 【hadoop】Flume的相关介绍
  • Trae - 国人Cursor的免费平替产品
  • idea经常卡顿解决办法
  • ctfshow权限维持
  • 城市扫街人文街头纪实胶片电影感Lr调色预设,DNG/手机适配滤镜!
  • 2025 Java 微信小程序根据code获取openid,二次code获取手机号【工具类】拿来就用