diff --git a/advanced/class.md b/advanced/class.md index 59129a6a..9d43e740 100644 --- a/advanced/class.md +++ b/advanced/class.md @@ -265,7 +265,7 @@ let a = new Animal('Jack'); ```ts class Animal { public name; - private constructor (name) { + protected constructor (name) { this.name = name; } } @@ -291,6 +291,36 @@ class Animal { } ``` +### readonly + +只读属性关键字,只允许出现在属性声明或索引签名中。 + +```ts +class Animal { + readonly name; + public constructor(name) { + this.name = name; + } +} + +let a = new Animal('Jack'); +console.log(a.name); // Jack +a.name = 'Tom'; + +// index.ts(10,3): TS2540: Cannot assign to 'name' because it is a read-only property. +``` + +注意如果 `readonly` 和其他访问修饰符同时存在的话,需要写在其后面。 + +```ts +class Animal { + // public readonly name; + public constructor(public readonly name) { + this.name = name; + } +} +``` + ### 抽象类 `abstract` 用于定义抽象类和其中的抽象方法。