Typescript无法检测相交函数中的参数类型

Typescript无法检测相交函数中的参数类型,typescript,Typescript,我有一个变量,可以是集合或映射。函数的第一个参数在forEach中是相同的,但是TypeScript返回到any 声明let setOrMap:Map | Set; setOrMap.forEach((myBool)=>{ //myBool是任何8-/ }); 签名如下: (方法)forEach(callbackfn:((值:布尔,键:字符串,映射:映射)=>void)和((值:布尔,值2:布尔,集:集)=>void),thisArg:any):void 这是一个已知的错误/缺少的功能(在ts

我有一个变量,可以是集合或映射。函数的第一个参数在
forEach
中是相同的,但是TypeScript返回到
any

声明let setOrMap:Map | Set;
setOrMap.forEach((myBool)=>{
//myBool是任何8-/
});
签名如下:
(方法)forEach(callbackfn:((值:布尔,键:字符串,映射:映射)=>void)和((值:布尔,值2:布尔,集:集)=>void),thisArg:any):void


这是一个已知的错误/缺少的功能(在ts github repo中没有找到匹配的问题)还是我遗漏了什么?

可能是上下文类型的限制。我认为,如果我们处理的是重载签名,那么上下文类型根本不适用于参数(这就是交集真正的工作原理,重载签名)您可以手动将该类型添加到
myBool
中,如果使用
noImplicitAny
ts,则如果隐式推断出
任何
,则会引发错误