Lompati ke konten utama
Modul 4 · Pelajaran 1 dari 27/14 dalam kursus~15 min
Pelajaran modul (1/2)

Kelas dan Pengubah

TypeScript memperluas kelas ES6 standar dengan fitur Pemrograman Berorientasi Objek (OOP) yang kuat, seperti pengetikan statis, pengubah akses, dan properti parameter singkatan.

Kelas dan Pengubah Akses

Di TypeScript, Anda dapat mengontrol visibilitas anggota kelas, properti, dan metode menggunakan tiga kata kunci utama:

  • public (default): anggota dapat diakses dari mana saja.
  • private: anggota dapat diakses hanya dalam kelas yang mendefinisikannya.
  • protected: anggota dapat diakses dalam kelas dan subkelasnya (warisan).
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;
  }
}

Properti Parameter

TypeScript menawarkan sintaksis singkat untuk mendeklarasikan dan menginisialisasi anggota kelas secara langsung di konstruktor. Dengan mengawali parameter konstruktor dengan pengubah akses, properti secara otomatis dibuat dan ditetapkan:

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

Menerapkan Antarmuka

Sebuah kelas dapat mengimplementasikan satu atau lebih antarmuka menggunakan kata kunci implements. Hal ini memastikan kelas mematuhi kontrak tertentu dengan mendefinisikan semua metode dan properti yang diperlukan:

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.`);
  }
}

Warisan dan super

TypeScript sepenuhnya mendukung pewarisan kelas. Suatu kelas dapat memperluas kelas lain menggunakan kata kunci extends. Jika subkelas mendefinisikan konstruktor, ia harus memanggil konstruktor kelas dasar menggunakan fungsi super() sebelum mengakses this:

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

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

Cobalah sendiri

Latihan 1: Kelas Mobil dan Modifikator Pribadi

Latihan#ts.m4.l1.e1
Upaya: 0Memuat…

Deklarasikan kelas bernama Car. Itu harus memiliki properti model readonly (string) yang ditentukan dalam konstruktor, properti mileage pribadi (angka) yang diinisialisasi ke 0, metode publik drive(miles: number): void yang menambah jarak tempuh per mil, dan pengambil atau metode getMileage(): nomor yang mengembalikan jarak tempuh.

Memuat editor…
Tunjukkan petunjuk

Gunakan jarak tempuh pribadi: angka = 0; untuk menjadikan variabel pribadi, dan konstruktor (model baca publik: string) {} sebagai singkatan.

Solusi tersedia setelah 3 upaya

Latihan 2: Antarmuka Bentuk dan Kelas Lingkaran

Latihan#ts.m4.l1.e2
Upaya: 0Memuat…

Lengkapi kodenya dengan mengimplementasikan kelas Circle yang mengimplementasikan antarmuka Shape. Kelas harus memiliki properti radius hanya baca (angka) yang disetel melalui konstruktor, dan mengimplementasikan getArea(): number (mengembalikan Math.PI * radius * radius).

Memuat editor…
Tunjukkan petunjuk

Gunakan implementasi Shape pada kelas Lingkaran dan tentukan metode getArea(): number.

Solusi tersedia setelah 3 upaya

Latihan 3: Abstrak Kelas Kendaraan dan Subkelas Sepeda Motor

Latihan#ts.m4.l1.e3
Upaya: 0Memuat…

Deklarasikan kelas bernama Sepeda Motor yang memperluas kelas abstrak Kendaraan. Itu harus mengimplementasikan metode start() untuk mengembalikan string 'Sepeda Motor' diikuti dengan make (ini.make) dan 'mulai'.

Memuat editor…
Tunjukkan petunjuk

Gunakan kelas Motorcycle extends Vehicle dan terapkan metode string start(): yang mengembalikan string yang benar.

Solusi tersedia setelah 3 upaya

Latihan 4: Properti Parameter dan Warisan

Latihan#ts.m4.l1.e4
Upaya: 0Memuat…

Buat kelas bernama Employee yang mendefinisikan id properti readonly (angka) dan nama properti publik (string) menggunakan singkatan konstruktor. Kemudian, buat kelas Developer yang memperluas Employee dan menambahkan departemen properti publik (string) melalui konstruktor.

Memuat editor…
Tunjukkan petunjuk

Gunakan super(id, nama) di konstruktor Pengembang dan gunakan departemen publik untuk mendefinisikan properti melalui konstruktor.

Solusi tersedia setelah 3 upaya