typescript - 如何使用可选参数定义通用接口
问题描述
我有通用接口
interface Action<Type, Payload> {
type: Type;
payload?: Payload;
}
我的一些动作包含有效载荷,而另一些则不包含,因此“有效载荷”是可选的。但是当我尝试为具体操作定义接口时,它要求我传递第二个参数,即使我不需要它。我可以通过作为第二个参数传递来解决它undefined
,但我认为这不是一个好的解决方案。
export type GetSomethingAction = Action<
typeof ActionTypes.GET_SOMETHING,
undefined
>;
没有 'undefined' 怎么办?
解决方案
您可以默认设置Payload
为undefined
(请参阅通用参数默认值):
interface Action<Type, Payload = undefined> {
type: Type;
payload?: Payload;
}
然后,export type GetSomethingAction = Action<typeof ActionTypes.GET_SOMETHING>;
工作正常。
推荐阅读
- arrays - 用 Bash 中的数组元素制作一个表格
- sas - SAS DI 中 SCD2 变换的替代方案
- node.js - node.js 加密 pbkdf2 返回未定义
- amazon-web-services - Terraform 多个实例,但通过单独执行
- java - 从 RecyclerView 中删除项目仍然在后台显示
- c++ - 立即函数的参数
- c++ - 使用 C++17 填充 constexpr 数组
- plotly-dash - 动态更改线条颜色 dcc.Graph Plotly Dash 在注释之间
- python - “QGLXContext:无法在 Windows10 WSL2 中使用 PyQt5 创建虚拟上下文”
- python - 为收到的 PDF 文档添加唯一的文件 ID