1,类:

类是TypeScript的核心,大部分代码都是写在类里面;

声明:class 类名{  属性; 方法(){};}

注意:类名首字母同样大写,但是方法不需要表明类型,直接写方法名加()即可;属性也不要声明类型;直接写属性名即可;

但是可以加上访问控制符public(类外类内都可访问),protected(类内和子类里可访问),private(类内访问);

用protected和private修饰的构造函数,不能被实例化;但是用protected修饰的可以被继承;

实例化:利用new关键字;

例: class Person{

  name;

  eat(){

    console.log("eating");

  }

}

var p1=new Person();

p1.name="zhangsna";

p1.eat();

构造函数:constructor,每次实例化时都会调用构造函数,类外只能用new可以调用;

class Person{

  name; //声明属性

  constructor(name : String){  //构造函数

    this.name=name;

  }

}

可以用另一种写法:

class Person{

  constructor(public name:String){

   //注意与constructor(name : String)不同,在构造函数处使用访问控制符要明确标明,加访问控制符是声明了name属性,不加则是没有声明name属性;

  }

  eat(){

    console.log(this.name);  //上边不加访问控制符是不会打出name的,会报错(因为不加访问控制符就是没声明name);

  }

 }

2,类的继承:extends和 super

子类继承了父类后,就会获得父类的所有属性和方法;

super的两个用法:都是调用父类的方法时用,分别是构造方法和非构造方法

当调用父类的构造方法时使用super;

class Employee extends Person{

  constructor (name : String ,code : String){

    super(name);

    this.code=code;

  }

  code:String;

  work(){

   super.eat();   //当调用父类的非构造方法时

    this.doWork();

  }

  private doWork(){ //将doWork()方法声明为private是为了在类外不能先调用,,防止不吃饭就干活,而是先让吃饭再干活;

  }

}

3,类有时可以当作接口使用:(因为类可以创建类型)

class Point{

  x : number;

  y : number;

}

interface Point3d extends Point{

  z : number;

}

let point3d : Point3d = {x : 1, y : 2 ,z : 3};

4,javascript中的函数,可以使用函数体外部的变量;当函数这么做时,我们说它‘捕获’了该变量;

let z = 100;

function addToZ(x , y){

  return x+y+z;

}

最新文章

  1. tornado 路由系统----扩展(include)
  2. quartz 线程问题
  3. 基于mini2440的uboot移植(一)
  4. 【C++11】新特性——auto的使用
  5. ORB特征点检测
  6. Android之 左右滑动菜单
  7. hihocoder 1181 欧拉路.二
  8. Hibernate,JPA注解@OneToMany_Map
  9. 监控系统一些告警方式对比:短信、Email手机端、IM
  10. 监测div 元素 变动
  11. [翻译]只为图片使用IMG标签(Use IMG tags only for Images)
  12. 天棋哥哥大战AlphaGo
  13. 关于Response.redirect和Response.End出现线程中止异常的处理
  14. ubuntu 虚拟机vm virtualbox 不能打开 win7
  15. #pragma预处理命令
  16. 【Unity Shaders】Reflecting Your World —— Unity3D中的法线贴图和反射
  17. 基于FPM制作nginx RPM包
  18. 支持不同Android设备,包括:不同尺寸屏幕、不同屏幕密度、不同系统设置
  19. .NET Core跨平台部署
  20. sqlalchemy常用

热门文章

  1. 加密算法 MD5/SHA1
  2. Ubuntu下LaTex中文环境安装与配置
  3. iOS 开发之Target-action模式
  4. java用正则表达式获取domain
  5. Android开发问题集锦-Button初始为disable状态时自定义的selector不生效问题
  6. SQL Server 性能优化之——系统化方法提高性能
  7. Dispose模式
  8. 从零开始学C++之虚继承和虚函数对C++对象内存模型造成的影响
  9. KL25的AD采集操作
  10. 从零开始学C++之构造函数与析构函数(三):深拷贝与浅拷贝、空类