2017-08-27 4 views
3

je une interface comme ceci:Interface Tapuscrit faire en option

export interface IDefaultAction extends Object { 
    type: string 
    (dispatch: Dispatch<IStateObject>, getState:() => IStateObject, extraArgument: any): any; 
} 

est-il possible que je puisse faire la deuxième ligne dans l'interface en option? (dispatch: Dispatch<IStateObject>, getState:() => IStateObject, extraArgument: any): any;

et si oui, comment?

et aussi, si possible, s'il vous plaît expliquer ou me pointer vers la bonne documentation qui explique ce que fait cette interface signifie:

interface IA { 
():any; 
} 

Je ne peux pas comprendre cette syntaxe

():something; 

Merci!

modifier:

Je suis en train d'étendre ceci:

export type ThunkAction<R, S, E> = (dispatch: Dispatch<S>, getState:() => S, 
            extraArgument: E) => R; 

dans ma propre interface:

export interface IDefaultAction { 
    type: string; 
} 

, mais le cas échéant, la seule chose que je pouvais penser, est pour modifier l'original (ThunkAction) et rendre tout à l'intérieur facultatif, mais je ne vois pas comment.

Répondre

5

s'il vous plaît expliquer ou me pointer vers la bonne documentation qui explique ce que cela signifie d'interface:

L'interface IA est une interface de fonction. Il définit a "function type".

interface IA { 
    (): any; 
} 

const exampleImplementation: IA =() => ""; 

Le (): any définit la signature du type de fonction, qui comprend la liste des paramètres et le type de retour de la fonction. Le type de fonction IA ne prend aucun paramètre et renvoie un any.

Y a-t-il un moyen de rendre la seconde ligne de l'interface facultative?

La deuxième ligne est une signature de fonction, ce qui signifie que l'interface définit un type de fonction. Sa signature de fonction prend deux paramètres et renvoie un any. Bien que les interfaces prennent en charge optional properties, les interfaces ne prennent pas en charge les signatures de fonction facultatives.