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.
}
javascript
typescript
Anton Selin
sumber
sumber
Jawaban:
Saat ini ada tiga sintaksis yang TypeScript memungkinkan untuk deklarasi fungsi dalam antarmuka:
Menggunakan contoh
validation
fungsi Anda yang mengambil 1 parameter (any
tipe) danboolean
nilai kembalian:atau dalam sintaks yang lebih baru:
atau alternatifnya adalah:
validation: (flag: any) => boolean;
Larutan:
jadi untuk membuatnya opsional dengan sintaks lama itu mudah:
dengan sintaks kedua (penambahan terbaru - terima kasih
@toothbrush
)atau dalam sintaks ketiga (seperti yang Anda temukan):
validation?: (flag: any) => boolean;
sumber
any
bukanlah tipe, tetapi merupakan nama parameter yang secara implisit bertipeany
. Parameter harus diberi nama, bahkan pada antarmuka. Kode ini akan gagal untuk dikompilasi jika --noImplicitAny diaktifkan. Seharusnya seperti ini: divalidation?:(whatever:any) => boolean;
manawhatever
beberapa nama parameter yang masuk akal.if (object.validation)
:) Ini harus bertentangan dengan konteks objek, jadiif (this.validation)
mungkin juga sesuai tergantung pada keadaan Anda.