Bài 13: TypeScript – Abstract, abstract class
Tiếp tục với series học 15 phút mỗi ngày cùng yeulaptrinh.vn, hôm nay chúng ta sẽ cùng tìm hiểu về abstract, abstract class và modifier. Đây là những khái niệm, keyword sẽ dùng rất nhiều trong quá trình phát triển phần mềm, thể hiện tính kế thừa và đóng gói của code. Chúng ta vào nội dung chính của bài nhé.
Abstract
Trong TypeScript abstract, abstract class được sinh ra mới mục đích chính là thể hiện tính kế thừa.
Ta đi vào ví dụ cụ thể dưới đây nhé
abstract class Person {
name: string;
age: number;
address?: string;
constructor(name: string, age: number) {
this.age = age
this.name = name
}
getName() {
return this.name;
}
abstract getAge (): String;
}
class Student extends Person {
className: string;
constructor(name:string, age: number, className: string) {
super(name, age)
this.className = className;
}
getAge() {
return `${this.name} is ${this.age} years old`;
}
}
let student = new Student("unclebob", 20, "yeulaptrinh academy");
Các tính chất đặc trưng của abstract / abstract class
Một abstract class thường có một hoặc nhiều phương thức hoặc thuộc tính trừu tượng.
Tuy nhiên khi khai báo một class kế thừa từ abstract trên thì cần phải định nghĩa toàn bộ các abstract methods bên trong abstract class ấy.
Ở ví dụ trên, class Student phải định nghĩa toàn bộ các abstract methods / properties của Person, nếu không sẽ bị báo lỗi như sau
Non-abstract class 'Student' does not implement inherited abstract member 'getAge' from class 'Person'.
Non-abstract class 'Student' does not implement inherited abstract member 'address' from class 'Person'.
Không thể tạo các objects ( instance) từ các abstract class.
let newPerson = new Person("unclebob", 20,) // Cannot create an instance of an abstract class.
let newPerson = new Person("unclebob", 20,) // Cannot create an instance of an abstract class.
abstract class có thể kế thừa từ một hoặc nhiều interfaces
interface IPersonalProfile {
name: string;
age: number;
}
interface IPersonalWork {
address: string;
getAddress(): string;
}
abstract class Person implements IPersonalProfile, IPersonalWork {
name: string;
age: number;
address: string;
constructor(name: string, age: number, address: string) {
this.age = age
this.name = name
this.address = address
}
getAddress () {
return this.address
}
getName() {
return this.name;
}
abstract getAge (): String;
}
Summary
Bài viết trên mình đã giới thiệu các bạn về abstract, abstract class trong TypeScript và các tính chất cơ bản của abstract. Các bạn có thể tìm hiểu thêm các bài viết của chúng mình về TypeScript trên yeulaptrinh.vn nhé. Mong nhận được sự đóng góp của các bạn để chúng mình hoàn thành bài viết hơn