2017-08-27 54 views
3

我有一个这样的接口:打字稿的界面,使可选

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

有什么办法,我可以在界面可选的第二行? (dispatch: Dispatch<IStateObject>, getState:() => IStateObject, extraArgument: any): any;

如果是这样,怎么样?

而且如果可能的话,请解释或点我到正确的文档这也解释了什么呢这个接口是指:

interface IA { 
():any; 
} 

我只是想不通这句法

():something; 

谢谢!

编辑:

我试图延长这样的:

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

在我自己的接口:

export interface IDefaultAction { 
    type: string; 
} 

但可任选地 所以我能想到的唯一的事情,是修改原始(ThunkAction)并使其内部可选,但我不知道如何。

回答

5

请解释或点我到正确的文档这也解释了什么呢这个接口意味着:

IA接口是一个功能界面。它定义了a "function type"

interface IA { 
    (): any; 
} 

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

(): any定义函数类型的签名,其中包括函数的参数列表和返回类型。函数类型IA不带参数并返回any

有没有什么办法让接口的第二行可选?

第二行是一个函数签名,表示接口定义了一个函数类型。其功能签名需要两个参数并返回any

export interface IDefaultAction extends Object { 
    type: string; 
    (
    dispatch: Dispatch<IStateObject>,     // paramater 1 
    getState:() => IStateObject, extraArgument: any // parameter 2 
) : any;            // return type 
} 

虽然接口支持optional properties,但接口不支持可选功能签名。