typescript 中可以通过 infer 解构出 union 对象中指定的某个值的部分类型吗?
如下的 example,我期望可以通过 NewData 这个类型根据 key 取出原始 Data 中对应的值的类型,但是得到的是 never,这是 typescript 的问题吗,可以有其他的办法实现期待的功能吗,求解
https://www.typescriptlang.org/play/?ts=5.6.0-beta#code/C4TwD...
回复
1个回答

test
2024-08-11
type Data =
| {
key: 'a'
value: string
}
| {
key: 'b'
value: number
}
type NewData<T extends Data["key"]> = {
newKey: T,
value: Extract<Data, { key: T }>['value']
}
type ExpectValueNumber = NewData<"b">["value"] // number
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容