通过以下关键字来限制属性的读取权限。
public
关键字 定义可以在类外部访问的成员
-private
关键字 定义私有属性,在类外部不可访问(包括子类和实现类)protected
关键字 定义受保护的属性,在同类与子类中可以被访问(实现类和类外部不可被访问)
私有属性 private 与受保护属性 protected
一般来说如果类的属性是 public 的那么,如果有两个类的属性与类型一致,其 new 出来的对象就是同一类型的,但是,如果这两个相同的类中有属性是 private 或者 protected 类型的,那么即使这两个类的属性类型完全一致,他们创建的实例也不是同一类型的。
只读的属性
readonly 关键字可以将属性设置为只读,这样属性只有在声明时,或者在 constructor 里被初始化,其他地方修改会报错。
参数属性
一个属性的定义与这个属性在 constructor 中传入赋值,会有些重复,参数属性就是将这两个步骤合二为一,仅需要在 constructor 中传入属性时通过 访问限定符 声明并赋值这个属性。
抽象类
抽象类一般作为其他类的基类使用,其本身不可实例化,因为抽象类中定义的某些方法是需要继承他的类来复写的,在 TypeScript 中可以通过 abstract 来声明一个抽象类。
把类作为接口使用
class Parent {
constructor(readonly name: string, private value: any) {}
}
interface IParent extends Parent {
age: number
}
const a: IParent = {age: 222}; // 报错 少了继承自 Parent 中的两个属性类型 name | value