[Typescript]:是否可以使用generic X键和generic X值创建typesafe映射?

[Typescript]:是否可以使用generic X键和generic X值创建typesafe映射?,typescript,generics,Typescript,Generics,期望的行为是: const obj: ??? = { [Fruit<T>]: Taste<T>, [Fruit<Y>]: Taste<Y>, } const key: Fruit<T> = ...; obj[key] // can only be Taste<T> 常量对象:??={ [水果]:味道, [水果]:味道, } 常数键:水果=。。。; obj[key]//只能是味觉 我知道我可以使用类似于记录的东

期望的行为是:

const obj: ??? = {
  [Fruit<T>]: Taste<T>,
  [Fruit<Y>]: Taste<Y>,
}

const key: Fruit<T> = ...;

obj[key] // can only be Taste<T>
常量对象:??={
[水果]:味道,
[水果]:味道,
}
常数键:水果=。。。;
obj[key]//只能是味觉

我知道我可以使用类似于
记录
的东西,但它仍然允许我为
水果设置
口味

一种方法是创建一个映射类型,该类型表示与
味道相关的
水果
,类似

类型水果味映射={
苹果:“好吃”
香蕉:“没那么多”
}
然后,您的对象将被键入为

类型F={
[k in-keyof-furtastemap]:水果味调味品[k]
} 
这正是你想要的结果

const ok:F={//ok
苹果:“好吃”,
香蕉:“没那么多”
}
常数错误:F={
苹果:“好吃”,
香蕉:“喜欢!”//类型“喜欢!”“不可分配给类型“不太多”
}