Sử dụng Getters và Setters trong TypeScript

Ví dụ bên dưới là một class Person có 3 thuộc tính: age, firstName, và lastName: classPerson{public age:number;public firstName:string;public lastName:string;} Để truy cập các thuộc tính của class Person, bạn có thể làm như sau: let person =newPerson(); person.age =26; Giả sử bạn gán một giá trị, cái giá trị được người dùng nhập từ

Ví dụ bên dưới là một class Person có 3 thuộc tính: age, firstName, và lastName:

classPerson{public age:number;public firstName:string;public lastName:string;}

Để truy cập các thuộc tính của class Person, bạn có thể làm như sau:

let person =newPerson();
person.age =26;

Giả sử bạn gán một giá trị, cái giá trị được người dùng nhập từ form input để gán đến thuộc tính age:

person.age = inputAge;

Dó là giá trị nhập từ form input của người dùng, nên inputAge có thể là bất kỳ số nào. Để đảm bảo tính hợp lệ của tuổi, bạn có thể kiểm tra trước khi gán giá trị như sau:

if( inputAge >0&& inputAge <200){
    person.age = inputAge;}

Nếu sử dụng đoạn kiểm tra này ở khắp nơi trong dự án, code của chúng ta sẽ bị lặp lại nhiều lần và trở nên cồng kềnh, khó bảo trì.
Để tránh lặp lại việc kiểm tra này, bạn có thể sử dụng setters và getters. Các setters và getters cho phép bạn kiểm soát quyền truy cập vào các thuộc tính của lớp.
chú ý:

  • Một phương thức getter trả về giá trị của thuộc tính
  • Một phương thức setter thì cập nhật giá trị của thuộc tính

Một phương thức getter bắt đầu với từ khóa get, một phương thức setter bắt đầu với từ khóa set.

classPerson{private _age:number;private _firstName:string;private _lastName:string;publicgetage(){returnthis._age;}publicsetage(theAge:number){if(theAge <=0|| theAge >=200){thrownewError('The age is invalid');}this._age = theAge;}publicgetFullName():string{return`${this._firstName}${this._lastName}`;}}

Cách hoạt động:

  • Đầu tiên chúng ta thay đổi mức truy cập các thuộc tính age, firstName, và lastName từ public đến private.
  • Thứ hai, thay đổi thuộc tính age đến _age.
  • Thứ ba, tạo phương thức getter và setter cho thuộc tính _age. Trong phương thức setter, hãy kiểm tra tính hợp lệ của độ tuổi đầu vào trước khi gán nó cho thuộc tính _age.

Bây giờ, bạn có thể truy cập phương thức setter age như sau:

let person =newPerson();
person.age =10;

Lưu ý rằng lệnh gọi tới setter không có dấu ngoặc đơn như một phương thức thông thường. Khi bạn gọi person.age, phương thức setter với age sẽ được gọi. Nếu bạn chỉ định giá trị age không hợp lệ, setter với age sẽ gây ra lỗi:

person.age =0;

Error:

Error: The age is invalid

Khi bạn truy cập vào person.age, getter với age sẽ được gọi.
Phần sau thêm getters và setters vào thuộc tính firstName và lastName.

classPerson{private _age:number;private _firstName:string;private _lastName:string;publicgetage(){returnthis._age;}publicsetage(theAge:number){if(theAge <=0|| theAge >=200){thrownewError('The age is invalid');}this._age = theAge;}publicgetfirstName(){returnthis._firstName;}publicsetfirstName(theFirstName:string){if(!theFirstName){thrownewError('Invalid first name.');}this._firstName = theFirstName;}publicgetlastName(){returnthis._lastName;}publicsetlastName(theLastName:string){if(!theLastName){thrownewError('Invalid last name.');}this._lastName = theLastName;}publicgetFullName():string{return`${this.firstName}${this.lastName}`;}}

Tóm tắt:

  • Sử dụng TypeScript getters/setters để kiểm soát các thuộc tính truy cập của một class

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ