【发布时间】:2022-01-09 11:31:00
【问题描述】:
我有一个对象将具有字段products,该字段将填充不同端点返回的响应,每个端点返回一种产品类型。类似:
const products = {
// each of this kind of products comes from endpoint response
someProduct: {},
someOtherProduct: {}
anotherProduct: {}
}
所有产品类型都有一些共同的属性,例如名称、描述、价格。但它们也具有仅适用于一种产品的特定属性。在某些情况下,我需要遍历所有产品以呈现这些常见属性的列表,但有时我需要为每种类型的产品呈现特定数据。
如果这个product 对象包含不同的产品类型,每个产品类型都有不同的属性并且来自外部数据源(服务器),我该如何输入?
编辑 1:产品类型
每个产品都有一个属性type,用于标识每种产品类型
编辑 2:选定的产品类型
当我呈现列表中的所有产品时,用户可以单击其中任何一个并将所选产品存储在一个变量中...这样我就可以使用该所选产品打印特定产品详细信息...如何键入这个选定的产品,如果它可以是任何类型的产品?
【问题讨论】:
-
你可以添加一个type属性来指明是哪一个,然后根据type用if else语句检查属性或者...
-
你在谈论类型吗?我不明白你的意思......你能用一个具体的例子来回答......
-
产品类型的数量是否有限?您可以只键入每个单独的 API 响应,然后将
products对象设为具有这些响应的联合类型的记录。你需要类型警卫(即const objIsMyProductType(obj: any): obj is MyProductType => return obj.type === 'MyProductType'在你遍历时做事。我在这里遗漏了什么吗? -
您是要强类型化所有可能的产品,还是只定义一些已知的产品(并且只定义其他产品的基本属性)?
-
@BrendanBond 我的产品类型有限(六种),如果您能发布更完整的答案以便我了解整个上下文,我将不胜感激。
标签: javascript reactjs typescript