你好同事。
有这种类型
type SuperPuperType = {
v1: number
v2: string
}
还有一个由两个字段组成的对象数组:
- 名称(可以是“v1”或“v2”)
- 您想要数字或字符串的值,具体取决于值名称具有的值。
这个数组的泛型存在问题。请告诉我。谢谢!
UPD 显然,没有完全解释清楚。
这就是它应该去的方式
const SuperArray: SuperPuperGeneric<SuperPuperType>[] = [{
name: 'v1'
value: 1
},{
name: 'v2'
value: 'fooBoo'
}]
但是没有这样的选择
const SuperArray: SuperPuperGeneric<SuperPuperType>[] = [{
name: 'v1'
value: 1
},{
name: 'v2'
value: 2
}]
const SuperArray2: SuperPuperGeneric<SuperPuperType>[] = [{
name: 'v3'
value: 1
},{
name: 'v2'
value: 'fooBoo'
}]
类似 EzioMercer 的变体,但类型是自动创建的:
这个怎么运作?
MyMapping
并选择它作为参数Key
,我们需要它以便我们可以进一步转换该类型。T<A | B>
被评估为T<A> | T<B>
。您可以在文档中阅读有关此内容的更多信息。在内部extends
,类型Key
对应于并集的每个单独元素。作为一种选择:
有可能是这样的:
错误: