TypeScript'te isteğe bağlı işlevle bir Arayüz oluşturmak mümkün müdür?
interface IElement {
name: string;
options: any;
type: string;
value?: string;
validation(any): boolean; // --> should be optional.
}
TypeScript'te isteğe bağlı işlevle bir Arayüz oluşturmak mümkün müdür?
interface IElement {
name: string;
options: any;
type: string;
value?: string;
validation(any): boolean; // --> should be optional.
}
Yanıtlar:
Şu anda TypeScript'in arabirimlerde işlev bildirimlerine izin verdiği üç sözdizimi vardır:
validation1 parametre ( anytürden) ve bir booleandönüş değeri alan bir işlev örneğinizi kullanarak :
validation: {(flag: any): boolean};
veya daha yeni sözdiziminde:
validation(flag: any) : boolean;
veya bir alternatif:
validation: (flag: any) => boolean;
Çözüm:
bu nedenle eski sözdizimi ile isteğe bağlı hale getirmek kolaydır:
validation?: {(flag: any): boolean};
ikinci sözdizimi ile (son eklenen - sayesinde @toothbrush)
validation?(flag: any) : boolean;
veya üçüncü sözdiziminde (bulduğunuz gibi):
validation?: (flag: any) => boolean;
anybir tür değil, dolaylı olarak türden olan bir parametrenin adıdır any. Arayüzlerde bile parametreler adlandırılmalıdır. --NoImplicitAny etkinleştirilirse bu kod derlenemez. Şöyle bir şey olmalı: makul bir parametre adı validation?:(whatever:any) => boolean;nerede whatever.
if (object.validation):) Nesne bağlamına aykırı olması gerekir, bu nedenle if (this.validation)koşullarınıza bağlı olarak da uygun olabilir.