TypeScript学习笔记(三):类
类
在TypeScript中,类似于C#的结构,即一个文件中可以存在多个类,且文件名可以任意取,我们先看一个简单的类的示例。
class Person {
private name: string;
private age: number;
public constructor(name:string, age:number) {
this.name = name;
this.age = age;
}
public talk() {
alert("Hi, my name is " + this.name + ", i am " + this.age.toString() + "!");
}
}
function run() {
var p: Person = new Person("Li Lei", 18);
p.talk();
}
run();
TypeScript中的类需要注意下面几个点:
- class前不用加访问控制符,所有类都是全局公开可访问的;
- 如果类的属性和方法不加访问控制符则默认为public;
- 1.3开始支持protected访问权限,1.3之前仅支持public及private;
- 构造函数不是类名而是constructor;
- 访问类的成员变量及函数都需要加this关键字;
类的继承
在TypeScript中,如何实现类的继承呢,请看如下示例:
class Person
{
private name: string;
private age: number; constructor(name: string, age: number)
{
this.name = name;
this.age = age;
} talk()
{
alert("Hi, my name is " + this.name + ", i am " + this.age.toString() + "!");
}
} class Student extends Person
{
private school: string; constructor(name: string, age: number, school: string)
{
super(name, age);
this.school = school;
} talk()
{
super.talk();
alert("And I`m in " + this.school + "!");
}
} function run()
{
var p: Person = new Student("Li Lei", 18, "English School");
p.talk();
} run();
类的继承需要注意以下几点:
- 继承使用extends关键字;
- 调用父级使用super关键字;
- 重写父级方法不需要加override关键字,直接定义一样的方法即可;
- 父级变量可以调用到子级的方法,符合多态的概念;
getter/setter封装
在TypeScript中我们可以对一个成员变量进行getter和setter的封装,如下:
class Person
{
private _name:string; constructor(name: string)
{
this._name = name;
} set name(value:string) {this._name = value;}
get name() {return this._name;} talk()
{
alert("Hi, my name is " + this.name + "!");
}
} function run()
{
var p:Person = new Person(null);
p.name = "Li Lie";
p.talk();
} run();
静态数据和方法
在TypeScript中,是可以使用Static来定义静态变量及静态函数的,我们以单例类为例来看看:
class Person
{
private static _instance:Person; static getInstance():Person
{
if(this._instance == null)
{
this._instance = new Person();
}
return this._instance;
} talk()
{
alert("Hi, my name is Li Lie!");
}
} function run()
{
Person.getInstance().talk();
} run();
reference
TypeScript允许多个类在同一个文件里,但如果类与类在不同的文件,需要这种写法:
/// <reference path="SimpleWebSocket.ts"/>
class ComplexWebSocket extends SimpleWebSocket {
...
}
TypeScript学习笔记(三):类的更多相关文章
- Typescript 学习笔记三:函数
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记六:接口
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记二:数据类型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记一:介绍、安装、编译
前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...
- [Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
随机推荐
- .frm文件
http://www.cnblogs.com/jiangxu67/p/4755097.html MySQL]frm文件解析 MySQL 协议字节序 关于传输整数小大端的实现 http://hamilt ...
- bzoj3926
题目的意思是叶子不超过20个……听说当初zjoi不少人被坑 分别对每个叶子以它为根dfs出20个dfs树,这样整个树的任何一个子串,都是某个dfs树上一个点到它的一个子孙的路径 每个dfs树,根到叶子 ...
- Windows SDK 实现不规则窗口介绍
不规则窗口在程序界面设计中能提供非常好的用户体验,以下是我程序运行时的效果图: 以下是代码,注意需要修改一些简单的位置,如资源ID,项目的头文件等,这些是根据你创建的win32程序的项目名改变的,我的 ...
- Asp.Net微信登录-手机网站APP应用
要求:公众号必须先认证,认证费用¥300/年,比较黑 一.微信登录核心代码 //核心代码,没判断异常 1.登录页面 protected void Page_Load(object sender, Ev ...
- (任寒韬)WebApp群主 - MobileTech 资料
web app : http://www.lightapp.cn/brand/index/4101 https://github.com/jtyjty99999/mobileTech/blob/mas ...
- hdu 5310 Souvenir (水)
题意:今天是BestCoder一周年纪念日. 比赛管理员Soda想要给每个参赛者准备一个纪念品. 商店里纪念品的单价是p元, 同时也可以花q元购买纪念品套装, 一个套装里有m个纪念品.今天总共有n个参 ...
- UVA 568 Just the Facts (水)
题意: 求一个数n的阶乘,其往后数第1个不是0的数字是多少. 思路: [1,n]逐个乘,出现后缀0就过滤掉,比如12300就变成123,继续算下去.为解决爆long long问题,将其余一个数mod, ...
- 修改placeholder属性
input::-webkit-input-placeholder{ font-size:12px;}input:-ms-input-placeholder{ font-size:12px;}input ...
- python - os.path,路径相关操作
python处理系统路径的相关操作: # -*- coding: utf-8 -*- import os # 属性 print '__file__: %s' % __file__ # 绝对路径(包含文 ...
- Linux编译安装Darwin Streaming Server 6.0.3。。。
目前主流的流媒体服务器有微软的windows media server.RealNetworks的Helixserver和苹果公司的Darwin Streaming Server. 微软的window ...