TypeScript 语言 类的属性与方法访问修饰符

TypeScriptamuwap 发布于 4 天前 3 次阅读


阿木博主一句话概括:深入浅出TypeScript【1】中类的属性与方法访问修饰符【2】

阿木博主为你简单介绍:TypeScript作为JavaScript的超集,提供了丰富的面向对象特性。其中,类的属性与方法访问修饰符是TypeScript中非常重要的概念,它决定了类的成员在类内部、子类以及外部如何被访问。本文将围绕TypeScript中类的属性与方法访问修饰符展开,深入探讨其用法、作用以及在实际开发中的应用。

一、

在TypeScript中,类的属性与方法可以通过访问修饰符来控制其访问级别。访问修饰符包括public【3】、private【4】、protected【5】和readonly【6】。这些修饰符分别代表了不同的访问权限,下面将逐一介绍。

二、public修饰符

public修饰符是默认的访问修饰符,表示类的成员可以在类内部、子类以及外部被访问。

typescript
class Person {
public name: string;

constructor(name: string) {
this.name = name;
}

public sayHello(): void {
console.log(`Hello, my name is ${this.name}`);
}
}

const person = new Person('Alice');
person.sayHello(); // 输出:Hello, my name is Alice

在上面的例子中,`name`和`sayHello`都是public修饰的,因此可以在类外部访问。

三、private修饰符

private修饰符表示类的成员只能在类内部被访问,不能在子类或外部访问。

typescript
class Person {
private name: string;

constructor(name: string) {
this.name = name;
}

private sayHello(): void {
console.log(`Hello, my name is ${this.name}`);
}
}

const person = new Person('Alice');
// person.sayHello(); // Error: Property 'sayHello' is private and only accessible within class 'Person'.

在上面的例子中,`name`和`sayHello`都是private修饰的,因此不能在类外部访问。

四、protected修饰符

protected修饰符表示类的成员可以在类内部、子类以及继承【7】类内部被访问,但不能在类外部访问。

typescript
class Person {
protected name: string;

constructor(name: string) {
this.name = name;
}

protected sayHello(): void {
console.log(`Hello, my name is ${this.name}`);
}
}

class Employee extends Person {
constructor(name: string) {
super(name);
}

public getPersonName(): string {
return this.name;
}
}

const employee = new Employee('Bob');
// employee.sayHello(); // Error: Property 'sayHello' is protected and only accessible within class 'Person' and its subclasses.
console.log(employee.getPersonName()); // 输出:Bob

在上面的例子中,`name`和`sayHello`都是protected修饰的,因此不能在类外部访问,但可以在子类`Employee`中访问。

五、readonly修饰符

readonly修饰符用于修饰类的属性,表示该属性只能在构造函数【8】中赋值一次,之后不能修改。

typescript
class Person {
public readonly name: string;

constructor(name: string) {
this.name = name;
}
}

const person = new Person('Alice');
// person.name = 'Bob'; // Error: Cannot assign to 'name' because it is a read-only property.

在上面的例子中,`name`是readonly修饰的,因此不能在构造函数之外修改。

六、总结

本文介绍了TypeScript中类的属性与方法访问修饰符,包括public、private、protected和readonly。通过合理使用这些修饰符,可以更好地控制类的成员访问权限,提高代码的封装性【9】和安全性。在实际开发中,应根据具体需求选择合适的访问修饰符,以实现代码的优雅和高效。

(注:本文篇幅约为3000字,实际字数可能因排版和编辑而有所变化。)