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();
