[英]TypeScript: Getting Value from an Enum Key in Interface
我创建了一个名为FoodTypes
的枚举:
enum FoodTypes {
Meat,
Veggie,
}
然后我声明了一个名为Recipe
的接口,其中包含 FoodTypes 对象的FoodTypes
。
interface Recipe {
[FoodTypes.Meat]: [
{ name: 'Beef', val: 120 },
{ name: 'Pork', val: 200 },
],
[FoodTypes.Veggie]: [
{ name: 'Mushroom', val: 30 },
{ name: 'Lettuce', val: 10 },
],
};
如何访问界面中的特定值? 例如,我想获得Beef
的val
。 // should be 120
非常感谢!
编辑:@captain-yossarian 例如,如果我想稍后在 function 中传递值,因为它会动态变化(在前端使用 React Redux),我可以这样做吗? 我知道以下内容不起作用,因为我指的是一种类型:
function getBeefVal(recipe: Recipe) {
return "Beef Val: " + Recipe[FoodTypes.Meat][0]['val'];
}
type Beef = Recipe[FoodTypes.Meat][0]['val'] // 120
您可以使用方括号表示法来获取接口的嵌套属性。 就像普通的 JS 一样。
如果我想稍后在 function 中传递值,因为它会动态变化(在前端使用 React Redux),我可以这样做吗? 我知道以下内容不起作用,因为我指的是一种类型:
TS 有两个作用域。 一种用于类型,我们将其命名为TypeScope
- 另一种用于值 - ValueScope
在ValueScope
中使用TypeScope
中的类型是不可能的。 因为编译后所有类型都被删除了。
在某些情况下,可以在TypeScope
中使用ValueScope
中的值。 例如classes
。
class A {
age: number = 0
}
const x: A = { age: 42 } // ok
在上面的示例中,我使用了 ValueScope 中的A
ValueScope
作为TypeScope
中的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.