javascript提供构造函数和原型的方式来构造复用组件; TypeScript提供类的概念;共同点都要实例化;
类的定义
class类名{
name:string;//定义类的属性
fun(){//定义了一个无返回值的方法
//定义该方法所要实现的功能
}
say():string{//定义返回值类型为string的方法
//定义该方法所要实现的功能
return"返回值";// 用return关键字返回函数值
}
}
TypeScript可以使用“static” 关键字标注类的成员: 关键字 static
classcalc{
static count=10;
add(data1:number):number{
varsum=calc.count+data1;
returnsum;
}
}
var test=newcalc();
document.write(test.add(20));//30
类成员的静态属性我们可以直接调用,调用方式为如上例的count的调用方式:calc.count。而不能用this.count在类的内部使用。
构造函数:是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。而TypeScript的构造函数用关键字constructor来实现。可以通过this(和java/C#一样代表对象实例的成员访问)关键字来访问当前类体中的属性和方法。
classstudent{//定义student类
name:string;//定义类的属性
constructor(myname:string){//定义构造函数
this.name=myname;
}
study(){//定义类的方法
//定义该方法所要实现的功能
}
}
类的实例化:一般情况下,创建一个类后并不能直接的对属性和方法进行引用,必须对类进行实例化,即创建一个对象。TypeScript中用new关键字创建对象。实例化后通过“.”来访问属性和方法
class student{//定义student类
name:string;//定义类的属性
constructor(myname:string){//定义带参数的构造函数
this.name=myname;
}
study(){//定义类的方法
document.write("My name is "+this.name+".");
}
write():string{
return"write name:"+this.name;
}
}
vars1=newstudent("Jim");
document.write(""+s1.name+"");//获取name属性
s1.study();// 调用study方法
document.write(""+s1.write()+"");
继承:TypeScript中用关键字extends指明继承关系。例如,已经定义了类A,如果让类B继承A,我们把A叫做基类,B叫子类。在子类中调用基类中的属性与方法就要使用super关键字。
classAnimal{//定义基类
name:string;
constructor(theName:string){this.name=theName;}
move(meters:number){
document.write(this.name+" moved "+meters+"m.");
}
}
classSnakeextendsAnimal{//继承基类
constructor(name:string){
super(name);//调用基本类的构造函数
}
move(){//重写了基类的方法
document.write("Slithering...");
super.move(5);//调用基类的方法
}
}
varsam=newSnake("Python");//声明Snake类
sam.move();
在TypeScript中我们采用“extends”关键字来表示类的继承关系。在这里你可以看见“Snake”继承“Animal”的子类实现。在实例中也展示如何去重写父类的方法,在这里“Snake”创建了一个“move”方法来重写父类“Animal”的“move”方法,并通过“super”关键字来调用父类的方法。