Вам нужно объединить оба типа вместо использования объединения.
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);
}
}