【发布时间】:2022-01-03 02:33:02
【问题描述】:
例子
const food = {
fruit: ['apples', 'oranges'],
meat: ['chicken', 'pig']
}
function makeFood(ingredient, category) {
switch(true) {
case category === 'fruit' && ingredient === 'apples' {
// do something
}
case category === 'fruit' && ingredient === 'oranges' {
// do something
}
case category === 'meat' && ingredient === 'chicken' {
// do something
}
case category === 'meat' && ingredient === 'pig' {
// do something
}
}
}
输入类别的最佳方式是食物的关键,成分是价值?
目前我在做
function(ingredient, keyof typeof category) {
希望保持两者之间的关系。所以 TS 会根据类别值知道成分类型。
【问题讨论】:
-
你能提供一个更完整的例子吗?
-
category是什么?ingredient和category与food有什么关系? -
我会马上更新问题
-
不确定你到底想要什么,但像
function f<T extends keyof typeof food>(ingredient: (typeof food)[T][number], category: T) {?请注意,除非您将as const添加到food中的数组中,否则它们只是string[]。另请注意,[number]可能有点快&脏,有alternatives。 -
@Norfeldt 不是我的反对票
标签: javascript typescript