hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
      • NodeJS
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
      • MongoDB
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Machine Learning
    • Git và Github
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Typescript cơ bản
TypeScript cơ bản – Class, constructor, phạm vi truy cập và implements

TypeScript cơ bản – Class, constructor, phạm vi truy cập và implements

  • 17-10-2026
  • Toanngo92
  • 0 Comments

Class là một cách tổ chức trạng thái và hành vi vốn đã có trong JavaScript. TypeScript bổ sung cách mô tả thuộc tính, kiểm tra khởi tạo và phạm vi truy cập. Không phải ứng dụng nào cũng cần nhiều class, nhưng hiểu chúng giúp bạn đọc mã Angular, thư viện và những dự án dùng lập trình hướng đối tượng.

Mục lục

  • 1. Interface mô tả hợp đồng, class tạo đối tượng
  • 2. Khởi tạo thuộc tính bằng constructor
  • 3. Public, private, protected và readonly
  • 4. Kế thừa bằng extends
  • 5. Implements không thay thế extends
  • 6. Phân biệt private của TypeScript và trường #private
  • Đọc tiếp trong loạt bài

1. Interface mô tả hợp đồng, class tạo đối tượng

interface Enrollable {
  enroll(student: string): string;
}

Interface nói rằng một đối tượng phù hợp phải có phương thức enroll nhận string và trả string. Nó không tạo cách lưu học viên hay triển khai việc đăng ký. Class sẽ cung cấp phần triển khai đó và tạo ra giá trị tồn tại trong JavaScript khi chương trình chạy.

2. Khởi tạo thuộc tính bằng constructor

class Course implements Enrollable {
  public readonly id: number;
  public title: string;
  protected category: string;
  private students: string[] = [];

  constructor(id: number, title: string, category: string) {
    this.id = id;
    this.title = title;
    this.category = category;
  }

  enroll(student: string): string {
    const name = student.trim();
    if (!name) throw new Error("Tên học viên không được rỗng");
    this.students.push(name);
    return name + " đã đăng ký " + this.title;
  }

  get studentCount(): number {
    return this.students.length;
  }
}

Constructor chạy khi gọi new Course(…). Với strict, thuộc tính phải được khởi tạo theo cách trình biên dịch chứng minh được hoặc được khai báo có thể thiếu. Ở đây id, title, category được gán trong constructor; students có giá trị ban đầu là mảng rỗng. Không dùng dấu ! chỉ để bỏ cảnh báo khi chưa biết giá trị sẽ được gán lúc nào.

3. Public, private, protected và readonly

Public là phạm vi mặc định: mã bên ngoài có thể truy cập. Private giới hạn truy cập theo kiểm tra kiểu trong class khai báo. Protected cho phép class đó và class con truy cập, nhưng không cho mã bên ngoài. Readonly ngăn gán lại thuộc tính qua kiểu đang kiểm tra; trong ví dụ, id được gán khi khởi tạo rồi giữ nguyên.

Getter studentCount công khai số lượng học viên mà không đưa trực tiếp mảng students ra bên ngoài. Gọi course.studentCount, không phải studentCount(). Dù có khai báo kiểu, enroll vẫn kiểm tra chuỗi rỗng vì đây là điều kiện nghiệp vụ tại thời điểm chạy.

4. Kế thừa bằng extends

class FreeCourse extends Course {
  constructor(id: number, title: string) {
    super(id, title, "Miễn phí");
  }

  describe(): string {
    return this.title + " - " + this.category;
  }
}

const course = new FreeCourse(1, "TypeScript cơ bản");
console.log(course.enroll(" An "));
console.log(course.studentCount); // 1
console.log(course.describe());
export {};

Super gọi constructor của class cha và phải được thực hiện trước khi truy cập this trong constructor của class con. FreeCourse dùng được category vì nó là protected, nhưng không truy cập trực tiếp students vì nó là private. Ghép các đoạn theo thứ tự vào src/main.ts để biên dịch và chạy bằng Node.js.

5. Implements không thay thế extends

Implements chỉ kiểm tra class có đáp ứng interface hay không; nó không tự sao chép phương thức, thêm phần triển khai hoặc gán kiểu tham số cho mọi phương thức. Extends kế thừa hành vi từ class cha. Vì vậy phương thức enroll vẫn cần khai báo kiểu rõ ràng và phần thân thực thi của riêng nó.

6. Phân biệt private của TypeScript và trường #private

Từ khóa private của TypeScript chủ yếu được bảo vệ khi kiểm tra kiểu, không nên được xem là cơ chế giữ bí mật trước mọi mã JavaScript. Trường có cú pháp #students của JavaScript có quy tắc riêng về quyền truy cập khi chạy. Dù dùng cách nào, dữ liệu được gửi xuống trình duyệt vẫn không trở thành bí mật chỉ nhờ đóng trong class.

Class phù hợp khi dữ liệu và hành vi gắn với nhau. Với một thao tác chuyển đổi đơn giản, hàm và interface có thể dễ theo dõi hơn. Trước khi tạo hệ thống kế thừa nhiều tầng, hãy xem một object kết hợp các hàm nhỏ đã đáp ứng nhu cầu hay chưa.

Đọc thêm: TypeScript: Classes.

Đọc tiếp trong loạt bài

Bài trước: TypeScript cơ bản – Promise, async/await và kiểm tra dữ liệu API

Xem chuyên mục TypeScript cơ bản

Bài viết liên quan:

TypeScript với Kiểu Dữ Liệu Cơ Bản – 3
TypeScript với Kiểu Dữ Liệu Cơ Bản – 2
TypeScript với Kiểu Dữ Liệu Cơ Bản – 1
Typescript cơ bản và cách cài đặt cho người mới

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

TypeScript cơ bản – Class, constructor, phạm vi truy cập và implements

TypeScript cơ bản – Promise, async/await và kiểm tra dữ liệu API

TypeScript cơ bản – DOM, sự kiện và biểu mẫu trên trình duyệt

TypeScript cơ bản – Module, import, export và tổ chức nhiều file

TypeScript cơ bản – Generics và keyof: tái sử dụng mà vẫn giữ kiểu

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×