繁体   English   中英

TypeScript:从接口中的枚举键获取值

[英]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 },
    ],
};

如何访问界面中的特定值? 例如,我想获得Beefval // 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM