Apakah mungkin untuk membuat Antarmuka dalam TypeScript dengan fungsi opsional?
interface IElement {
name: string;
options: any;
type: string;
value?: string;
validation(any): boolean; // --> should be optional.
}
Apakah mungkin untuk membuat Antarmuka dalam TypeScript dengan fungsi opsional?
interface IElement {
name: string;
options: any;
type: string;
value?: string;
validation(any): boolean; // --> should be optional.
}
Jawaban:
Saat ini ada tiga sintaksis yang TypeScript memungkinkan untuk deklarasi fungsi dalam antarmuka:
Menggunakan contoh validationfungsi Anda yang mengambil 1 parameter ( anytipe) dan booleannilai kembalian:
validation: {(flag: any): boolean};
atau dalam sintaks yang lebih baru:
validation(flag: any) : boolean;
atau alternatifnya adalah:
validation: (flag: any) => boolean;
Larutan:
jadi untuk membuatnya opsional dengan sintaks lama itu mudah:
validation?: {(flag: any): boolean};
dengan sintaks kedua (penambahan terbaru - terima kasih @toothbrush)
validation?(flag: any) : boolean;
atau dalam sintaks ketiga (seperti yang Anda temukan):
validation?: (flag: any) => boolean;
anybukanlah tipe, tetapi merupakan nama parameter yang secara implisit bertipe any. Parameter harus diberi nama, bahkan pada antarmuka. Kode ini akan gagal untuk dikompilasi jika --noImplicitAny diaktifkan. Seharusnya seperti ini: di validation?:(whatever:any) => boolean;mana whateverbeberapa nama parameter yang masuk akal.
if (object.validation):) Ini harus bertentangan dengan konteks objek, jadi if (this.validation)mungkin juga sesuai tergantung pada keadaan Anda.