Classes trong TypeScript
Lập trình hướng đối tượng (OOP) là một phần quan trọng trong TypeScript. TypeScript mở rộng JavaScript với các tính năng mạnh mẽ như class, kế thừa, và ghi đè phương thức, giúp tổ chức và tái sử dụng mã dễ dàng hơn.

Bài này sẽ hướng dẫn bạn cách tạo và sử dụng class
, khai báo thuộc tính và phương thức, cũng như cách kế thừa và ghi đè phương thức trong TypeScript.
1. Tạo và sử dụng class trong TypeScript
Trong TypeScript, class
được sử dụng để tạo các đối tượng có thuộc tính và phương thức riêng.
1.1. Khai báo class
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
introduce(): string {
return `Xin chào, tôi là ${this.name}, ${this.age} tuổi.`;
}
}
const person1 = new Person("An", 25);
console.log(person1.introduce()); // Output: Xin chào, tôi là An, 25 tuổi.
-
name: string; age: number;
→ Khai báo thuộc tính củaclass
. -
constructor(name: string, age: number)
→ Hàm khởi tạo, chạy khi tạo đối tượng mới. -
introduce()
→ Phương thức trả về chuỗi giới thiệu bản thân.
2. Các thuộc tính và phương thức của class
2.1. Các mức độ truy cập (public
, private
, protected
)
TypeScript hỗ trợ các modifier để kiểm soát quyền truy cập vào thuộc tính hoặc phương thức.
Modifier | Ý nghĩa |
---|---|
public |
Mặc định, có thể truy cập từ bên ngoài class |
private |
Chỉ có thể truy cập bên trong class |
protected |
Có thể truy cập trong class và class con |
Ví dụ:
class Car {
public brand: string; // Có thể truy cập từ bên ngoài
private engine: string; // Chỉ có thể truy cập bên trong class
protected year: number; // Có thể truy cập trong class con
constructor(brand: string, engine: string, year: number) {
this.brand = brand;
this.engine = engine;
this.year = year;
}
getEngine(): string {
return this.engine; // Có thể truy cập private bên trong class
}
}
const car1 = new Car("Toyota", "V6", 2023);
console.log(car1.brand); // ✅ Hợp lệ
console.log(car1.getEngine()); // ✅ Hợp lệ
// console.log(car1.engine); ❌ Lỗi vì engine là private
2.2. Sử dụng phương thức getter và setter
Getter và setter giúp kiểm soát việc truy cập vào các thuộc tính private.
class Account {
private balance: number = 0;
get getBalance(): number {
return this.balance;
}
set deposit(amount: number) {
if (amount > 0) {
this.balance += amount;
}
}
}
const myAccount = new Account();
myAccount.deposit = 1000; // Gửi tiền
console.log(myAccount.getBalance); // Output: 1000
-
get getBalance()
→ Trả về giá trị củabalance
(getter). -
set deposit(amount: number)
→ Thay đổi giá trịbalance
(setter).
3. Sử dụng tính kế thừa (extends
) và ghi đè (override
)
3.1. Kế thừa (extends
)
Class con có thể kế thừa thuộc tính và phương thức của class cha bằng từ khóa extends
.
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
makeSound(): void {
console.log("Động vật phát ra âm thanh");
}
}
class Dog extends Animal {
breed: string;
constructor(name: string, breed: string) {
super(name); // Gọi constructor của class cha
this.breed = breed;
}
bark(): void {
console.log(`${this.name} sủa gâu gâu!`);
}
}
const dog1 = new Dog("Buddy", "Golden Retriever");
dog1.makeSound(); // Output: Động vật phát ra âm thanh
dog1.bark(); // Output: Buddy sủa gâu gâu!
-
class Dog extends Animal
→Dog
kế thừaAnimal
. -
super(name)
→ Gọi constructor của class cha. -
Dog
có thể gọi cảmakeSound()
củaAnimal
và phương thức riêngbark()
.
3.2. Ghi đè phương thức (override
)
Class con có thể ghi đè phương thức của class cha bằng cách định nghĩa lại phương thức đó.
class Cat extends Animal {
makeSound(): void {
console.log(`${this.name} kêu meo meo!`);
}
}
const cat1 = new Cat("Mèo Con");
cat1.makeSound(); // Output: Mèo Con kêu meo meo!
-
makeSound()
trongCat
ghi đè phương thức củaAnimal
.
3.3. Dùng super.method()
để gọi phương thức của class cha
Nếu muốn giữ lại chức năng của class cha nhưng bổ sung thêm tính năng mới, có thể dùng super.method()
.
class Bird extends Animal {
makeSound(): void {
super.makeSound(); // Gọi phương thức của class cha
console.log(`${this.name} hót líu lo!`);
}
}
const bird1 = new Bird("Chim Vàng Anh");
bird1.makeSound();
// Output:
// Động vật phát ra âm thanh
// Chim Vàng Anh hót líu lo!
-
super.makeSound()
→ Gọi phương thứcmakeSound()
củaAnimal
.
4. Tổng kết
Tính năng | Cách sử dụng |
---|---|
Tạo class | class Person {} |
Hàm khởi tạo (constructor) | constructor(name: string) { this.name = name; } |
Mức độ truy cập | public , private , protected |
Getter và Setter | get getBalance() { return this.balance; } |
Kế thừa (extends ) |
class Dog extends Animal {} |
Ghi đè phương thức (override ) |
makeSound(): void {} |
Gọi phương thức class cha | super.methodName(); |
TypeScript giúp lập trình hướng đối tượng mạnh mẽ hơn với các tính năng class
, extends
, và override
.

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.
Xem thêm

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.
Liên hệ công việc qua email dưới đây.
lhvuctu@gmail.com