¿Es posible crear una interfaz en TypeScript con función opcional?
interface IElement {
name: string;
options: any;
type: string;
value?: string;
validation(any): boolean; // --> should be optional.
}
javascript
typescript
Anton Selin
fuente
fuente

Respuestas:
Actualmente, hay tres sintaxis que TypeScript permite para declaraciones de funciones en interfaces:
Usando su ejemplo de una
validationfunción que toma 1 parámetro (deanytipo) y unbooleanvalor de retorno:o en la sintaxis más reciente:
o una alternativa es:
validation: (flag: any) => boolean;Solución:
así que hacerlo opcional con la sintaxis anterior es fácil:
con la segunda sintaxis (adición reciente - gracias a
@toothbrush)o en la tercera sintaxis (como encontraste):
validation?: (flag: any) => boolean;fuente
anyes un tipo, sino el nombre de un parámetro que es implícitamente de tipoany. Los parámetros deben tener un nombre, incluso en las interfaces. Este código no se podrá compilar si --noImplicitAny está habilitado. Debería ser algo como esto:validation?:(whatever:any) => boolean;dóndewhateverestá algún nombre de parámetro razonable.if (object.validation):) Es necesario contra el contexto del objeto, por loif (this.validation)que también puede ser apropiado según sus circunstancias.