TypeScript----类
2024-10-20 08:53:59
一、类的属性
public: 公有,
private: 私有,不能在声明它的类的外部访问,只能在类内部访问
protect: 保护,不能在声明它的类的外部访问,但继承者除外
readonly 只读属性,必须在声明时或构造函数里被初始化
static静态属性,无需实例化就可以访问静态成员
super()方法,它会执行基类的构造方法
class Grid {
static origin = {x: , y: };
calculateDistanceFromOrigin(point: {x: number; y: number;}) {
let xDist = (point.x - Grid.origin.x);
let yDist = (point.y - Grid.origin.y);
return Math.sqrt(xDist * xDist + yDist * yDist) / this.scale;
}
constructor (public scale: number) { }
} let grid1 = new Grid(1.0); // 1x scale
let grid2 = new Grid(5.0); // 5x scale console.log(grid1.calculateDistanceFromOrigin({x: , y: }));
console.log(grid2.calculateDistanceFromOrigin({x: , y: }));
二、类的存取,set() 和 get()
let passcode = "secret passcode"; class Employee {
private _fullName: string; get fullName(): string {
return this._fullName;
} set fullName(newName: string) {
if (passcode && passcode == "secret passcode") {
this._fullName = newName;
}
else {
console.log("Error: Unauthorized update of employee!");
}
}
} let employee = new Employee();
employee.fullName = "Bob Smith";
if (employee.fullName) {
alert(employee.fullName);
}
三、类的继承 extends
class Animal {
name:string;
constructor(theName: string) { this.name = theName; }
move(distanceInMeters: number = ) {
console.log(`${this.name} moved ${distanceInMeters}m.`);
}
} class Snake extends Animal {
constructor(name: string) { super(name); }
move(distanceInMeters = ) {
console.log("Slithering...");
super.move(distanceInMeters);
}
} class Horse extends Animal {
constructor(name: string) { super(name); }
move(distanceInMeters = ) {
console.log("Galloping...");
super.move(distanceInMeters);
}
} let sam = new Snake("Sammy the Python");
let tom: Animal = new Horse("Tommy the Palomino"); sam.move();
tom.move();
四、抽象类:abstract,派生类的基类使用。它们一般不会直接被实例化。
abstract class Department{
constructor(public name:string){}
printName():void{
console.log('Department name:'+this.name);
}
abstract printMeeting():void;//抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。
}
class AcountingDepartment extends Department{
constructor(){
super('Accounting and Auditing');
}
printMeeting():void{
console.log('The Accounting Department meets each Monday at 10am.');
}
generateReports():void{
console.log('Generating accounting reports...');
}
}
let department:Department;
department=new Department() //error
let department=new AcountingDepartment();
department.printName();
department.printMeeting();
//department.generateReports();
最新文章
- 微信小程序之明源商城系列-01-商城介绍及开发准备
- JavaScript、全选反选-课堂笔记
- javax mail网址
- Xamarin.Android之UI Test简单入门
- HTML5[5]:在移动端禁用长按选中文本功能
- 关于js的兼容问题(小办法)!
- ZOJ 3826
- linux重定向总结:如何将shell命令的输出信息自动输出到文件中保存
- 《VTL语法参考指南》中文版[转]
- 腾讯应用开发3006 : name lookup timed out 错误
- [python标准库]Pickle模块
- 接口测试入门(2)--get和post初级请求/使用httpclient做一个获取信息list的请求(需要登录才可以)
- 实验吧 deeeeeeaaaaaadbeeeeeeeeeef-20
- 如何使用kafka增加topic的备份数量,让业务更上一层楼
- es6 语法 (Proxy和Reflect 的对比)
- LeetCode(51):N皇后
- Tensorflow手写数字识别---MNIST
- 如何使用JDBC删除一条记录
- Java Web c3p0 pool池泄漏优化与日志分析
- C#基础第八天-作业答案-设计类-面向对象方式实现两个帐户之间转账