首页 > 解决方案 > 如何使用可选参数定义通用接口

问题描述

我有通用接口

interface Action<Type, Payload> {
  type: Type;
  payload?: Payload;
}

我的一些动作包含有效载荷,而另一些则不包含,因此“有效载荷”是可选的。但是当我尝试为具体操作定义接口时,它要求我传递第二个参数,即使我不需要它。我可以通过作为第二个参数传递来解决它undefined,但我认为这不是一个好的解决方案。

export type GetSomethingAction = Action<
  typeof ActionTypes.GET_SOMETHING,
  undefined
>;

没有 'undefined' 怎么办?

标签: typescript

解决方案


您可以默认设置Payloadundefined(请参阅通用参数默认值):

interface Action<Type, Payload = undefined> {
  type: Type;
  payload?: Payload;
}

然后,export type GetSomethingAction = Action<typeof ActionTypes.GET_SOMETHING>;工作正常。


推荐阅读