TypeScript 可选的区分联合体的回调参数类型未被推断,

0pizxfdo  于 23天前  发布在  TypeScript
关注(0)|答案(4)|浏览(15)

Bug报告
可选的 discriminated union 回调参数类型未被推断

🔎 搜索词

#35769

🕗 版本与回归信息

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}

ufj5ltwl

ufj5ltwl1#

行为可以追溯到至少3.3.3。看起来我们的判别检测在联合的Record部分有点困惑。

bn31dyow

bn31dyow2#

@RyanCavanaugh 有任何进展吗?

whlutmcx

whlutmcx4#

有任何更新吗?
我不确定这个Playground链接是否和这个问题一样,但如果是真的,那么在5.1.6版本中仍然存在:https://www.typescriptlang.org/play?ts=5.1.6#code/C4TwDgpgBAEghgOwCYBsICcAKd1wLYTAYDOUAvFAN4BQUdUAjgK4YgBqcKAlknMAPboAXFAAUASnIA+KACN+-NIgDctegAtEqDCNHNWIylB4jiwdFwQBzKAF9JZGQDd+PVbagAfKmrr707Jw8fIIA-CJMyBAAZpYQSKr0UJrIaMJi-iARUbEI8Q7OrgnUtqrUAMb8CGZQYDj4pBQ0SZkc3LwC6RLSUOYsADS+yVppupkFPklJldWKEAB0KPxWeiwB4kO2tB7EfFzEsRCk8KkY2LgEROjEqkA

相关问题