我有这样的界面:
$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)并使其中的所有内容都是可选的,但我不知道如何。
答案 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,但接口不支持可选的功能签名。