根据格式在打字稿中打印多级数组

问题描述 投票:0回答:1

我正在尝试根据上述格式打印以下变量。有人可以帮忙吗?

数据

export const shop_items: Inventory:{
    Toys{
        Balls: {
            BallId: 001uy,
            BallName: Soccerball,
            SignedBy: David_Beckham,
        },
    },
    Books:{
        Novel: {
            BookId: ‘001fd’,
            BookName: ‘Beauty and the beast’,  
        },
        Puzzle: {
            BookId: ‘002sz’,
            BookName: ‘Sherlock Holmes’,  
        },
        Sci-fi: {
            BookId: ’003tr’,
            BookName: ‘Dr.Gadget’,  
        },
    }
}

格式

toy下面的变量就是原样打印出来的。但是书籍下的数据应该作为路径出现

BallId : 001uy
BallName : Soccerball
SignedBy : David_Beckham

/Books/Novel/BookId : 001fd
/Books/Puzzle/BookId : 002sz
/Books/Sci-fi/BookId : 003tr
javascript arrays typescript multidimensional-array interface
1个回答
0
投票

这解决了你的问题。在 Playground 上试试吧。

type Ball = { BallId: string; BallName: string; SignedBy?: string };
type Book = { BookId: string; BookName: string; SignedBy? : string}

type Inventory = { Books: { [Item: string]:  Book} } & { Toys: { [Item: string]:  Ball } };
const shop_items: Inventory = {
  Toys: {
    Balls: {
      BallId: "001uy",
      BallName: "Soccerball",
      SignedBy: "David_Beckham",
    },
  },
  Books: {
    Novel: {
      BookId: "001fd",
      BookName: "Beauty and the beast",
    },
    Puzzle: {
      BookId: "002sz",
      BookName: "Sherlock Holmes",
    },
    "Sci-fi": {
      BookId: "003tr",
      BookName: "Dr.Gadget",
    },
  },
};

function printBook(name: string, book: Book){
    console.log(`Book/${name}/bookId: ${book.BookId}`);
}

function printBall( ball: Ball){
    console.log(`BallId: ${ball.BallId}`);
    console.log(`BallName: ${ball.BallName}`);
    console.log(`SingnedBy: ${ball.SignedBy}`);

}
Object.entries(shop_items.Toys).forEach((val: [string, Ball]) => printBall(val[1] ))
Object.entries(shop_items.Books).forEach((val: [string, Book]) => printBook(val[0],val[1] )
© www.soinside.com 2019 - 2024. All rights reserved.