Class
1 | class Greeter { |
继承
1 | class Animal { |
1 | class Animal { |
private, protected, public
默认为 public
1 | class Animal { |
private
当成员被标记成 private时,它就不能在声明它的类的外部访问。
1 | class Animal { |
如果其中一个类型里包含一个 private成员,那么只有当另外一个类型中也存在这样一个 private成员, 并且它们都是来自同一处声明时,我们才认为这两个类型是兼容的。 对于 protected成员也使用这个规则。
1 | class Animal { |
protected
protected修饰符与 private修饰符的行为很相似,但有一点不同, protected成员在派生类中仍然可以访问。
1 | class Person { |
构造函数也可以被标记成 protected。 这意味着这个类不能在包含它的类外被实例化,但是能被继承。比如,
1 | class Person { |
readonly修饰符
你可以使用 readonly关键字将属性设置为只读的。 只读属性必须在声明时或构造函数里被初始化。
1 | class Octopus { |
参数属性
1 | class Octopus { |
参数属性通过给构造函数参数前面添加一个访问限定符来声明。 使用 private限定一个参数属性会声明并初始化一个私有成员;对于 public和 protected来说也是一样。
存取器
TypeScript支持通过getters/setters来截取对对象成员的访问。
1 | let passcode = "secret passcode"; |
存取器要求你将编译器设置为输出ECMAScript 5或更高。 不支持降级到ECMAScript 3。 其次,只带有 get不带有 set的存取器自动被推断为 readonly。 这在从代码生成 .d.ts文件时是有帮助的,因为利用这个属性的用户会看到不允许够改变它的值。
静态属性
1 | class Grid { |
抽象类
1 | abstract class Animal { |
抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。
1 | abstract class Department { |