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).
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:
// 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:
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:
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
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.
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
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).
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
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'.
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ạ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.
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ử