From f9c13c7d4deeb7bf0cfe97cbcc909132c7a16844 Mon Sep 17 00:00:00 2001 From: dengwb Date: Mon, 16 Sep 2019 11:26:43 +0800 Subject: [PATCH] feat: add 'readonly' modifier and fix write error --- advanced/class.md | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) 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` 用于定义抽象类和其中的抽象方法。