TypeScript 如何使用getter和setter

TypeScript 如何使用getter和setter

在TypeScript中,有两种支持的方法getter和setter来访问和设置类成员。在这个非常简短的文章中,我将向您展示包括getter和setter方法的TypeScript访问器。

实际上,getter和setter只是一种为您提供访问对象属性的方法。与其他面向对象的语言(如Java、C++等)不同,在TypeScript中,您可以直接访问变量(如下面的示例所示)。这被称为TypeScript访问器。

TypeScript访问器属性的方法:

  • getter: 当您想要访问对象的任何属性时,使用此方法。getter也称为访问器。
  • setter: 当您想要更改对象的任何属性时,使用此方法。setter也称为变异器。

下面给出的代码示例是一个 Student 类,具有3个属性:name,semester和course。

class Student {
    public name: string;
    public semester: number;
    public course: string;
}

访问Student类的任何属性:

let student = new Student();

// You can access Student class variables directly
Student.name = "Aman Rathod";

Getter 方法:

注意: 获取变量值的常规方法是使用 getter 访问器属性。在对象字面量中,它由 get 关键字表示。getter 可以是公共的、受保护的或私有的。

语法:

get accessName() {  
    // getter, the code executed on 
    // getting obj.accessName  
}

示例: 在这个示例中,我们将看到使用Getter方法的情况。

Javascript

class Student {
 
    private _name: string = "Aman Rathod";
    private _semester: number;
    private _course: string;
 
    // Getter method to return name of
    // Student class
    public get name() {
        return this._name;
    }
 
}
 
// Access any property of the Student class
let student = new Student();
 
// Getter call
let value = student.name;
 
console.log(value);

输出:

Aman Rathod

从上面的示例中可以观察到,当我们调用getter方法(student.name)时,我们没有像调用普通函数那样包括开放和关闭的括号。因此,您可以直接访问变量。

Setter方法: 用于更新变量值的setter属性是常规方法。它们在对象字面量中以set关键字表示。

语法:

set accessName(value) {  

    // The code executed on setting 
    // obj.accessName = value, from setter  
}  

示例: 在这个示例中,我们将看到setter方法的使用。

JavaScript

class Student {
 
    private _name: string = "Aman Rathod";
    private _semester: number;
    private _course: string;
 
    // Getter method to return name
    // of Student class
    public get name() {
        return this._name;
    }
 
    // Setter method to set the semester number
    public set semester(thesem: number) {
        this._semester = thesem;
    }
 
    // Setter method
    public set course(thecourse: string) {
        this._course = thecourse;
    }
}
 
// Access any property of the Student class
let student = new Student();
 
// Setter call
student.semester = 5;
student.course = "Web Development";

从上面的示例中,你还可以注意到setter方法的调用不像普通方法那样带有括号。当你调用student.semester或student.course时,会调用semester或course的setter方法并将值赋给它。

处理错误: 你也可以在setter方法中添加条件,如果条件无效则抛出错误。让我们通过下面的示例来理解。

Javascript

class Student {
    private _name: string = "Aman Rathod";
    private _semester: number;
    private _course: string;
 
    // Suppose the only 1st to 8th-semester students
    // are allowed to purchase the courses.
    public set semester(thesem: number) {
 
        if (thesem < 1 || thesem > 8) {
            throw new Error(
                'Sorry, this course is valid for students from 1st to 8th semester');
        }
 
        this._semester = thesem;
    }
}
 
// Access any property of the Student class
let student = new Student();
 
// setter call
student.semester = 9;

输出:

TypeScript 如何使用getter和setter

构造函数: 现在让我们讨论使用构造函数来访问Getter和Setter方法。实际上,在类中使用构造函数与不使用构造函数来访问Getter或Setter方法没有区别,但我们只是想对TypeScript中的构造函数进行概述。

示例: 在这个示例中,我们将看到使用构造函数来使用Getter和Setter方法。

Javascript

class Student {
    name: string;
    semester: number;
    course: string;
 
    constructor(nm: string, sm: number, cs: string) {
        this.name = nm;
        this.semester = sm;
        this.course = cs;
    }
 
    // Getter method 
    public get courses() {
        return this.course;
    }
 
    public set courses(thecourse: string) {
        this.course = thecourse;
    }
}
 
// Access any property of the Student class, 
let student = new Student("Aman Rathod", 4, "Web Development");
 
// Setter call
student.course = "Data structure";
 
// Getter call
console.log("Course purchased is " + student.courses);

输出:

TypeScript 如何使用getter和setter

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程