Chuyển đến nội dung chính
Mô-đun 4 · Bài học 1 trong tổng số 27/14 trong khóa học~15 min
Bài học theo mô-đun (1/2)

Lớp học và công cụ sửa đổi

TypeScript mở rộng các lớp ES6 tiêu chuẩn với các tính năng Lập trình hướng đối tượng (OOP) mạnh mẽ, chẳng hạn như gõ tĩnh, sửa đổi truy cập và thuộc tính tham số tốc ký.

Các lớp và công cụ sửa đổi quyền truy cập

Trong TypeScript, bạn có thể kiểm soát mức độ hiển thị của các thành viên lớp, thuộc tính và phương thức bằng ba từ khóa chính:

  • public (mặc định): thành viên có thể truy cập được từ mọi nơi.
  • private: chỉ có thể truy cập thành viên trong lớp xác định nó.
  • protected: thành viên có thể truy cập được trong lớp và các lớp con của nó (kế thừa).
TS
class Animal {
  public name: string;
  private age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  public getAge(): number {
    return this.age;
  }
}

Thuộc tính tham số

TypeScript cung cấp cú pháp tốc ký để khai báo và khởi tạo thành viên lớp trực tiếp trong hàm tạo. Bằng cách thêm tiền tố vào tham số hàm tạo bằng công cụ sửa đổi truy cập, thuộc tính sẽ được tạo và gán tự động:

TS
// This syntax does exactly the same as the previous example!
class Animal {
  constructor(
    public name: string,
    private age: number,
  ) {}
}

Giao diện triển khai

Một lớp có thể triển khai một hoặc nhiều giao diện bằng từ khóa implements. Điều này đảm bảo lớp tuân thủ một hợp đồng cụ thể bằng cách xác định tất cả các phương thức và thuộc tính cần thiết:

TS
interface Flyable {
  fly(altitude: number): void;
}

class Bird implements Flyable {
  constructor(public name: string) {}

  fly(altitude: number): void {
    console.log(`${this.name} is flying at ${altitude} meters.`);
  }
}

Kế thừa và super

TypeScript hỗ trợ đầy đủ tính kế thừa lớp. Một lớp có thể mở rộng một lớp khác bằng từ khóa extends. Nếu lớp con định nghĩa một hàm tạo, nó phải gọi hàm tạo của lớp cơ sở bằng hàm super() trước khi truy cập this:

TS
class Person {
  constructor(public name: string) {}
}

class Student extends Person {
  constructor(
    name: string,
    public grade: number,
  ) {
    super(name); // Calls the Person constructor
  }
}

Hãy tự mình thử

Bài tập 1: Lớp ô tô và Công cụ sửa đổi riêng

tập thể dục#ts.m4.l1.e1
Nỗ lực: 0Đang tải…

Khai báo một lớp có tên là Car. Nó phải có một thuộc tính mô hình chỉ đọc (chuỗi) được xác định trong hàm tạo, một thuộc tính số dặm riêng (số) được khởi tạo bằng 0, một phương thức công khai drive(miles: number): void tăng số dặm theo dặm và một getter hoặc phương thức getMileage(): số trả về số dặm.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Sử dụng số dặm riêng: số = 0; để đặt biến ở chế độ riêng tư và hàm tạo (mô hình chỉ đọc công khai: chuỗi) {} làm tốc ký.

Giải pháp khả dụng sau 3 lần thử

Bài tập 2: Giao diện hình dạng và Lớp hình tròn

tập thể dục#ts.m4.l1.e2
Nỗ lực: 0Đang tải…

Hoàn thành mã bằng cách triển khai lớp Circle triển khai giao diện Shape. Lớp này phải có thuộc tính bán kính chỉ đọc (số) được đặt thông qua hàm tạo và triển khai getArea(): number (trả về Math.PI * bán kính * bán kính).

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Sử dụng các công cụ Shape trên lớp Circle và định nghĩa phương thức getArea(): number.

Giải pháp khả dụng sau 3 lần thử

Bài tập 3: Lớp phương tiện cơ giới và lớp con xe máy trừu tượng

tập thể dục#ts.m4.l1.e3
Nỗ lực: 0Đang tải…

Khai báo một lớp có tên là Motorcycle để mở rộng lớp trừu tượng Vehicle. Nó phải triển khai phương thức start() để trả về chuỗi 'Motorcycle ' theo sau là make (this.make) và ' started'.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Sử dụng lớp Motorcycle mở rộng Xe và triển khai phương thức chuỗi start(): để trả về chuỗi chính xác.

Giải pháp khả dụng sau 3 lần thử

Bài tập 4: Thuộc tính tham số và kế thừa

tập thể dục#ts.m4.l1.e4
Nỗ lực: 0Đang tải…

Tạo một lớp có tên Nhân viên xác định id (số) thuộc tính chỉ đọc và tên thuộc tính công khai (chuỗi) bằng cách sử dụng tốc ký của hàm tạo. Sau đó, tạo một lớp Nhà phát triển mở rộng Nhân viên và thêm bộ phận (chuỗi) thuộc tính công cộng thông qua hàm tạo.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Sử dụng super(id, name) trong hàm tạo của Nhà phát triển và sử dụng bộ phận công khai để xác định thuộc tính thông qua hàm tạo.

Giải pháp khả dụng sau 3 lần thử