在 TypeScript 中,我们可以使用修饰符来控制类的成员访问权限。在这篇文章中,我们将深入学习 TypeScript 中类的修饰符及其使用方法。
修饰符的种类
public
public 是 TypeScript 中默认的修饰符。它表示成员是公共的,可以在类内部和外部访问。
// javascriptcn.com 代码示例 class Person { public name: string; constructor(name: string) { this.name = name; } } const person = new Person('Tom'); console.log(person.name); // Tom
private
private 表示成员是私有的,只能在类内部访问,无法在类外部访问。
// javascriptcn.com 代码示例 class Person { private name: string; constructor(name: string) { this.name = name; } introduce() { console.log(`My name is ${this.name}.`); } } const person = new Person('Tom'); person.introduce(); // My name is Tom. console.log(person.name); // Error: Property 'name' is private and only accessible within class 'Person'.
protected
protected 表示成员是受保护的,可以在类内部和派生类中访问,但是在类外部无法访问。
// javascriptcn.com 代码示例 class Person { protected name: string; constructor(name: string) { this.name = name; } } class Student extends Person { constructor(name: string) { super(name); } introduce() { console.log(`My name is ${this.name}.`); } } const student = new Student('Tom'); student.introduce(); // My name is Tom. console.log(student.name); // Error: Property 'name' is protected and only accessible within class 'Person' and its subclasses.
readonly
readonly 表示成员是只读的,无法被重新赋值。
// javascriptcn.com 代码示例 class Person { readonly name: string; constructor(name: string) { this.name = name; } changeName() { // Error: Cannot assign to 'name' because it is a read-only property. this.name = 'Jerry'; } }
修饰符的使用场景
使用修饰符可以创造更加健壮的代码,并且可以更好地保证代码的安全性,防止意外修改导致的不可预期的错误。
比如在开发框架或者库的时候,我们通常希望限制一些方法或属性的访问权限,避免开发者对内部实现进行修改,导致整个框架或库失效。
另外,使用修饰符也可以让代码更加易读和易维护。通过使用 private 和 protected 限制方法或属性的访问权限,可以明确地表达出这些方法或属性只能在特定的位置或类中被调用或访问,让代码的结构更加清晰。
总结
在 TypeScript 中,我们可以使用修饰符来控制类的成员访问权限。public 是默认修饰符,表示成员是公共的;private 表示成员是私有的,只能在类内部访问;protected 表示成员是受保护的,可以在类内部和派生类中访问;readonly 表示成员是只读的,无法被重新赋值。使用修饰符可以创造更加健壮的代码,并且可以更好地保证代码的安全性,防止意外修改导致的不可预期的错误。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6530a5db7d4982a6eb2385ea