¿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
validation
función que toma 1 parámetro (deany
tipo) y unboolean
valor 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
any
es 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óndewhatever
está 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.