博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TypeScript学习笔记(三):类
阅读量:5824 次
发布时间:2019-06-18

本文共 2682 字,大约阅读时间需要 8 分钟。

在TypeScript中,类似于C#的结构,即一个文件中可以存在多个类,且文件名可以任意取,我们先看一个简单的类的示例。

1 class Person { 2     private name: string; 3     private age: number; 4  5     public constructor(name:string, age:number) { 6         this.name = name; 7         this.age = age; 8     } 9 10     public talk() {11         alert("Hi, my name is " + this.name + ", i am " + this.age.toString() + "!");12     }13 }14 15 function run() {16     var p: Person = new Person("Li Lei", 18);17     p.talk();18 }19 20 run();

TypeScript中的类需要注意下面几个点:

  • class前不用加访问控制符,所有类都是全局公开可访问的;
  • 如果类的属性和方法不加访问控制符则默认为public;
  • 1.3开始支持protected访问权限,1.3之前仅支持public及private;
  • 构造函数不是类名而是constructor;
  • 访问类的成员变量及函数都需要加this关键字;

类的继承

在TypeScript中,如何实现类的继承呢,请看如下示例:

1 class Person 2 { 3     private name: string; 4     private age: number; 5  6     constructor(name: string, age: number) 7     { 8         this.name = name; 9         this.age = age;10     }11 12     talk()13     {14         alert("Hi, my name is " + this.name + ", i am " + this.age.toString() + "!");15     }16 }17 18 class Student extends Person19 {20     private school: string;21 22     constructor(name: string, age: number, school: string)23     {24         super(name, age);25         this.school = school;26     }27 28     talk()29     {30         super.talk();31         alert("And I`m in " + this.school + "!");32     }33 }34 35 function run()36 {37     var p: Person = new Student("Li Lei", 18, "English School");38     p.talk();39 }40 41 run();

类的继承需要注意以下几点:

  • 继承使用extends关键字;
  • 调用父级使用super关键字;
  • 重写父级方法不需要加override关键字,直接定义一样的方法即可;
  • 父级变量可以调用到子级的方法,符合多态的概念;

getter/setter封装

在TypeScript中我们可以对一个成员变量进行getter和setter的封装,如下:

1 class Person 2 { 3     private _name:string; 4  5     constructor(name: string) 6     { 7         this._name = name; 8     } 9 10     set name(value:string) {this._name = value;}11     get name() {return this._name;}12 13     talk()14     {15         alert("Hi, my name is " + this.name + "!");16     }17 }18 19 function run()20 {21     var p:Person = new Person(null);22     p.name = "Li Lie";23     p.talk();24 }25 26 run();

静态数据和方法

在TypeScript中,是可以使用Static来定义静态变量及静态函数的,我们以单例类为例来看看:

1 class Person 2 { 3     private static _instance:Person; 4  5     static getInstance():Person 6     { 7         if(this._instance == null) 8         { 9             this._instance = new Person();10         }11         return this._instance;12     }13 14     talk()15     {16         alert("Hi, my name is Li Lie!");17     }18 }19 20 function run()21 {22     Person.getInstance().talk();23 }24 25 run();

reference

TypeScript允许多个类在同一个文件里,但如果类与类在不同的文件,需要这种写法:

1 /// 
2 class ComplexWebSocket extends SimpleWebSocket {3 ...4 }

转载于:https://www.cnblogs.com/lancidie/p/7344842.html

你可能感兴趣的文章
记一次Git异常操作:将多个repository合并到同一repository的同一分支
查看>>
Chrome 广告屏蔽功能不影响浏览器性能
查看>>
Android状态栏实现沉浸式模式
查看>>
使用Openfiler搭建ISCSI网络存储
查看>>
学生名单
查看>>
(转) 多模态机器翻译
查看>>
【官方文档】Nginx负载均衡学习笔记(三) TCP和UDP负载平衡官方参考文档
查看>>
矩阵常用归一化
查看>>
Oracle常用函数总结
查看>>
【聚能聊有奖话题】Boring隧道掘进机完成首段挖掘,离未来交通还有多远?
查看>>
考研太苦逼没坚持下来!看苑老师视频有点上头
查看>>
HCNA——RIP的路由汇总
查看>>
zabbix监控php状态(四)
查看>>
实战Django:小型CMS Part2
查看>>
原创]windows server 2012 AD架构试验系列 – 16更改DC计算机名
查看>>
统治世界的十大算法
查看>>
linux svn安装和配置
查看>>
SSH中调用另一action的方法(chain,redirect)
查看>>
数据库基础
查看>>
表格排序
查看>>