javascript - Fungsi Opsional TypeScript dalam Interface


Apakah mungkin untuk membuat sebuah Interface di TypeScript dengan fungsi opsional?

interface IElement {
  name: string;
  options: any;
  type: string;
  value?: string;
  validation(any): boolean; // --> should be optional.

}

Jawaban #1

Saat ini ada tiga sintaks yang diizinkan TypeScript untuk deklarasi fungsi dalam antarmuka:

Menggunakan contoh Anda tentang fungsi validation yang mengambil 1 parameter (dari tipe any) dan nilai kembali boolean:

validation: {(flag: any): boolean};

atau dalam sintaks yang lebih baru:

validation(flag: any) : boolean;

atau alternatifnya adalah:

validation: (flag: any) => boolean;

Solusi:

jadi membuatnya opsional dengan sintaks lama itu mudah:

validation?: {(flag: any): boolean};

dengan sintaks kedua (penambahan terbaru - terima kasih kepada @toothbrush)

validation?(flag: any) : boolean;

atau dalam sintaks ketiga (seperti yang Anda temukan):

validation?: (flag: any) => boolean;

Jawaban #2

Sama seperti properti field, kita juga bisa mendeklarasikan metode opsional di sebuah interface, cukup dengan menempatkan "?" setelah nama metode

 interface Vehicle{
  run?(): void;
}

class Sedan implements Vehicle {}

class SUV implements Vehicle {
  run() {
    console.log("run run");
  }
}

let suv = new SUV();

suv.run();

Artikel terkait