Abstract Class trong TypeScript

Định nghĩa một abstract class trong TypeScript bằng cách sử dụng từ khóa abstract. Abstract class chủ yếu được sử dụng để các lớp khác kế thừa từ chúng. Chúng ta không thể tạo một thể hiện của một abstract class.

Một abstract class thường bao gồm một hoặc nhiều phương thức trừu tượng (abstract method) hoặc các khai báo thuộc tính. Lớp kế thường abstract class phải định nghĩa tất cả các phương thức trừu tượng.

Abstract class sau khai báo một phương thức trừu tượng find và một phương thức bình thường display.

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

    display(): void{
        console.log(this.name);
    }

    abstract find(string): Person;
}

class Employee extends Person { 
    empCode: number;
    
    constructor(name: string, code: number) { 
        super(name); // must call super()
        this.empCode = code;
    }

    find(name:string): Person { 
        // execute AJAX request to find an employee from a db
        return new Employee(name, 1);
    }
}

let emp: Person = new Employee("James", 100);
emp.display(); //James

let emp2: Person = emp.find('Steve');

Trong ví dụ trên, Person là một abstract class bao gồm một thuộc tính và hai phương thức, một trong số đó được khai báo là abstract. Phương thức find() là một phương thức trừu tượng và do đó phải được định nghĩa trong lớp kế thừa. Lớp Employee kế thừa lớp Person và vì vậy nó phải định nghĩa phương thức find(). Lớp Employee phải triển khai tất cả các phương thức trừu tượng của lớp Person, nếu không trình biên dịch sẽ hiển thị lỗi.

The class which implements an abstract class must call super() in the constructor.

Abstract class cũng có thể có các thuộc tính trừu tượng, như được trình bày ở ví dụ bên dưới.

abstract class Person {
    abstract name: string;

    display(): void{
        console.log(this.name);
    }
}

class Employee extends Person { 
    name: string;
    empCode: number;
    
    constructor(name: string, code: number) { 
        super(); // must call super()
        
        this.empCode = code;
        this.name = name;
    }
}

let emp: Person = new Employee("James", 100);
emp.display(); //James
TypeScript
Bài Viết Liên Quan:
Namespace trong TypeScript
Trung Nguyen 14/10/2021
Namespace trong TypeScript

Namespace được sử dụng để nhóm logic các chức năng. Namespace có thể bao gồm các interface, lớp, hàm và biến để hỗ trợ một nhóm các chức năng liên quan.

Từ khóa readonly và static trong TypeScript
Trung Nguyen 13/10/2021
Từ khóa readonly và static trong TypeScript

Trong hướng dẫn này bạn sẽ tìm hiểu về từ khóa readonly, static và cách sử dụng chúng trong TypeScript.

Từ khóa kiểm soát truy cập trong TypeScript
Trung Nguyen 12/10/2021
Từ khóa kiểm soát truy cập trong TypeScript

TypeScript có ba từ khóa kiểm soát quyền truy cập: public, private và protected để kiểm soát khả năng hiển thị của các thành phần dữ liệu của nó.

Module trong TypeScript
Trung Nguyen 10/10/2021
Module trong TypeScript

Trong phần này, chúng ta sẽ tìm hiểu về module trong TypeScript. Cách export, import, biên dịch và sử dụng các module trong ứng dụng web.