如何键入嵌套对象?

How to type a nested object?

提问人:Chris 提问时间:8/21/2022 最后编辑:funnydmanChris 更新时间:8/21/2022 访问量:271

问:

我想键入一个对象以将其包含在 React 状态中。这是一个购物车对象,其中包含几个产品 ID 及其道具。

对象:

{
  "1047151242": {
      "name": "Item 1 name",
      "price": 22.99,
      "quantity": 2,
      "subtotal": 45.98
  },
  "3327300382": {
      "name": "Item 2 name",
      "price": 90.49,
      "quantity": 2,
      "subtotal": 180.98
  }
}

等,其中产品 ID 可以是相同格式的任何字符串。

然后引用该类型:

const [cart, setCart] = useState<CartInterface>(CartState);
reactjs 打字稿

评论

1赞 katniss 8/21/2022
你读过这些吗?typescriptlang.org/docs/handbook/2/objects.html
0赞 Chris 8/21/2022
我可以输入购物车项目本身: interface CartItem { name: string; price: number; quantity: number; subtotal: number; };让我失望的是 ID 以及如何制定接口来集成它。是的,我可以阅读,我正在努力学习。

答:

1赞 soffyo 8/21/2022 #1

如果我理解正确,你只需要一个类型

type CartInterface = {
    [s: string]: {
        name: string;
        price: number;
        quantity: number;
        subtotal: number;
    }
}

现在,当您像您提到的那样使用它时,将是 . 如果这回答了您的问题,我建议您更深入地阅读打字稿文档。 您可以查看此 Playground 链接以查看其运行情况。cartCartInterface

评论

1赞 Chris 8/21/2022
谢谢soffyo!我读书,也读书。我无法弄清楚的是 [s: string] 位。现在我看到了你的例子,我明白了它是如何工作的。感谢您的指点,非常感谢!