2017-08-27 63 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,但接口不支持可選功能簽名。