Bug报告
可选的 discriminated union 回调参数类型未被推断
🔎 搜索词
🕗 版本与回归信息
typescript@4.4.4
⏯ Playground 链接
https://www.typescriptlang.org/play?ts=4.5.0-beta#code/C4TwDgpgBAglC8UDeAoK6qkgfgFxQHIYCAaNDAQ3wAoBjfJKAE3wDsBXAWwCMIAnKAF8AlAgB8UAG4B7AJZMA3CkEoUWaACEEycunX4CG0rqhUodBszZdefElHpQAzsD6zWAcyGj4EmfKUVVXVYDQBhbTgAHygtJRRJCgEzGHCAbQBdKBiAJQhaaT4mAB4XN097VLDMiUQ0k1QMJtMaMCSKTicfCUbmvpMmlUGUDKA
💻 代码
type A = {
type?: 'A',
a: (c: { d: number }) => void;
}
type B = {
type: 'B',
a: (c: { d: number, c: string }) => void;
}
type ABC = A | B ;
var a: ABC[] | Record<string, ABC[]> = [
{
a: (params) => {
}
}
]
🙁 实际行为
方法 'a' 的参数无法正确推断。
🙂 预期行为
方法 'a '的参数可以正确推断: {d: number}
4条答案
按热度按时间ufj5ltwl1#
行为可以追溯到至少3.3.3。看起来我们的判别检测在联合的
Record
部分有点困惑。bn31dyow2#
@RyanCavanaugh 有任何进展吗?
nfeuvbwi3#
@wingsico no
whlutmcx4#
有任何更新吗?
我不确定这个Playground链接是否和这个问题一样,但如果是真的,那么在5.1.6版本中仍然存在:https://www.typescriptlang.org/play?ts=5.1.6#code/C4TwDgpgBAEghgOwCYBsICcAKd1wLYTAYDOUAvFAN4BQUdUAjgK4YgBqcKAlknMAPboAXFAAUASnIA+KACN+-NIgDctegAtEqDCNHNWIylB4jiwdFwQBzKAF9JZGQDd+PVbagAfKmrr707Jw8fIIA-CJMyBAAZpYQSKr0UJrIaMJi-iARUbEI8Q7OrgnUtqrUAMb8CGZQYDj4pBQ0SZkc3LwC6RLSUOYsADS+yVppupkFPklJldWKEAB0KPxWeiwB4kO2tB7EfFzEsRCk8KkY2LgEROjEqkA