angular - 主题的可选参数
问题描述
我的 Angular 服务中有一个主题,
itemClicked: Subject<MenuTab | MenuLaunchTab, MenuItem>;
问题是,我只想在MenuItem
我作为MenuTab
第一个参数传递时传递,而当第一个参数是.MenuLaunchTab
我想复制我们对函数参数所做的事情:
function(tab: MenuTab | MenuLaunchTab, item?: MenuItem)
解决方案
您需要结合使用这两种类型而不是联合使用。
itemClicked: Subject<MenuTab, MenuItem> & Subject<MenuLaunchTab>;
现在itemClicked
支持两者Subject<MenuTab, MenuItem>
,Subject<MenuLaunchTab>
但既不支持Subject<MenuTab>
也不支持Subject<MenuLaunchTab, MenuItem>
。
一个函数应该联合所有可能的覆盖类型。不幸的是,这意味着除了
function(tab: MenuTab | MenuLaunchTab, item?: MenuItem)
您可以做的是在开始时检测类型,然后拆分您的流程。
function(tab: MenuTab | MenuLaunchTab, item?: MenuItem) {
// or other check that fits, because their definition is unclear.
const menuLaunchTab: MenuLaunchTab | undefined = item ? undefined : tab;
const menuTab: MenuTab | undefined = item ? tab : undefined;
if (menuTab) {
handlerOfmenuTab(menuTab, item);
} else if (menuLaunchTab) {
handlerOfmenuLaunchTab(menuLaunchTab);
}
}
推荐阅读
- node.js - 未捕获的错误:找不到模块“zlib”
- mysql - 如何通过连接选择表的多个字段的不同计数/选择
- gmt - 如何使用通用制图工具打印地质图例?
- c# - IIS10 - MySQL 数据库断开连接 - 发生未处理的异常(事件 id 1309)
- sanity - 我可以通过 GROQ 查询联系到祖父母吗?
- java - 将 java.lang.reflect.Method 转换为功能接口
- node.js - 在 nodejs 中使用正文发出 post 请求
- xpath - 如何使用xpath和scrapy提取不同页面(子页面)上的所有图像
- c++ - 为什么这个函数指针赋值在直接赋值而不是使用条件运算符时起作用?
- c - 纪元时间转换为日期/时间格式