如何用打字稿创建命名对象?

Jus*_*ung 1 interface typescript angular

正在努力使用打字稿为我的 Angular2 服务设置一些接口。遇到配置问题。

我希望能够像这样访问我的数据myItem['chickens']并取回以下对象:

{
  name:"chicken",
  price:1000,
  names:["Harry", "Barry", "Larry"]
}
Run Code Online (Sandbox Code Playgroud)

如何以正确的方式编写界面,以便能够像前面提到的那样取回数据?

export interface StoreItem {
      itemName:{
        itemName: string;
        price: number;
        nameList: Array<string>;
      }
    }
Run Code Online (Sandbox Code Playgroud)

jon*_*rpe 5

你的StoreItems 有字符串键和键入的值,所以你可以这样做:

interface StoreItem {
  [key: string]: {
    itemName: string;
    price: number;
    nameList: Array<string>;  // or string[]
  }
}
Run Code Online (Sandbox Code Playgroud)

这将很高兴地允许例如:

let myItem: StoreItem = {
  chickens: {
    name: 'chicken',
    price: 1000,
    names: ['Harry', 'Barry', 'Larry']
  }
};
Run Code Online (Sandbox Code Playgroud)

您可以作为myItem['chickens']或简单地访问该内部项目myItem.chickens