Typescript接口是可选的

时间:2017-08-27 14:08:57

标签: typescript typescript-typings typescript2.0

我有这样的界面:

$myVar = 2>1 ? 'it is OK' : 'it is not OK';

有什么办法可以让界面中的第二行可选吗? 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;

但可选地, 所以我唯一能想到的就是修改原版(ThunkAction)并使其中的所有内容都是可选的,但我不知道如何。

1 个答案:

答案 0 :(得分: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,但接口不支持可选的功能签名。