如何使用typescript';s使用object而不是switch/if语句区分联合

如何使用typescript';s使用object而不是switch/if语句区分联合,typescript,type-inference,discriminated-union,Typescript,Type Inference,Discriminated Union,我使用的是一个有区别的并集,但不是使用条件语句进行分支,而是使用对象映射(calculationHandlersobject,在下面的代码段中)。下面是它的样子: const sumtreenumbers=(一:数字,二:数字,三:数字)=>{ 返回1+2+3 } 常量multiplyTwoNumber=({1,2}:{1:number,2:number})=>1*2 常量计算处理程序={ 总和:三个数字, 乘法:乘法数字 }常量 类型计算={ 类型:'sum', 输入:参数 } 类型多重计算=

我使用的是一个有区别的并集,但不是使用条件语句进行分支,而是使用对象映射(
calculationHandlers
object,在下面的代码段中)。下面是它的样子:

const sumtreenumbers=(一:数字,二:数字,三:数字)=>{
返回1+2+3
}
常量multiplyTwoNumber=({1,2}:{1:number,2:number})=>1*2
常量计算处理程序={
总和:三个数字,
乘法:乘法数字
}常量
类型计算={
类型:'sum',
输入:参数
}
类型多重计算={
键入:“乘法”,
输入:参数
}
类型计算=总和计算|倍数计算
const handleCalculation=(计算:计算)=>{
const calculate=calculationHandlers[calculation.type]
返回计算(…计算.输入)
}


Typescript对传递给
calculate
函数的参数表示不满,但是,这里似乎不可能有不匹配的参数。

是的,Typescript无法跟踪
calculate
calculate类型之间的关系。输入
是的,typescript无法跟踪
计算
计算类型之间的关系。输入