动态访问TypeScript中的对象属性



我正在用TypeScript制作一款游戏。游戏的库存系统包含如下几个值:

export const Inventory = {
food: 0,
medicine: 0,
rifleAmmo: 0,
pistolAmmo: 0
}

目前,我正在使用以下功能管理从库存中添加和减去

export const removeFromInventory = ({amount}: itemInterface) => {
return Inventory.rifleAmmo  = Inventory.rifleAmmo - amount 
}

我想让这个函数接受一个动态值的名称和金额,目前我有这个从其他答案在这里堆栈溢出:

enum itemType {
'rifle-ammo'
}
interface itemInterface {
amount: number,
item: itemType
}
export const AddToInventory = ({amount, item}: itemInterface) => {
return  Inventory[item]  = Inventory.item + amount 
}

然而,我得到的错误是字符串不能用作索引类型,类型为"any"也没用。我知道这是可能的,但我缺乏TypeScript技能。如何在TypeScript中动态访问一个对象的属性?

你可以这样做

type inventory = typeof Inventory;
export const Inventory = {
food: 0,
medicine: 0,
rifleAmmo: 0,
pistolAmmo: 0
}
enum itemType {
'rifle-ammo'
}
interface itemInterface {
amount: number,
item: keyof inventory
}
export const AddToInventory = ({amount, item}: itemInterface) => {
return  Inventory[item]  = Inventory[item] + amount 
}

相关内容

  • 没有找到相关文章

最新更新