【发布时间】:2023-01-22 19:36:00
【问题描述】:
我正在寻找这个问题的答案,但找不到。所以,我有这个界面:
export interface productsListFromOrder{
product_name: string,
amount: number,
price: number,
}
我制作了这个对象的数组,然后推送:
products:productsListFromOrder[] = []; //productsListFormOrder is my interface
myFunction(): void{
//...
this.products.push({
product_name: product?.name!,
price: product?.price!,
amount: element.amount ? parseInt(element.amount) : 1
})
}
问题是我的标题有错误:
类型“布尔”不能分配给类型“数字” 我确定该类型是正确的,因为我测试了一些东西:
- 我显示价格类型,它显示数字
console.log(typeof product?.price!);
- 我在 any[] 上设置了产品数组类型,它工作正常,但我想使用我的界面
products:productsListFromOrder[] = [];
- 我是这样解决这个问题的
regular_price: typeof product?.price! == 'boolean' ? 0 : product?.price!,好的,如果我使用方法 2 或 3,我的代码可以工作,但这不是我的目标。我需要使用我的界面(而不是第 2 点中的任何[])和第 3 点的代码很难看.是什么最重要的-为什么我有这个错误? Product.price 有一个型号.我如何在不检查类型的情况下编写这段代码?
【问题讨论】:
-
product的接口是什么? -
请提供一个minimal reproducible example,清楚地说明您面临的问题。理想情况下,有人可以将代码粘贴到像 The TypeScript Playground (link here!) 这样的独立 IDE 中,然后立即着手解决问题,而无需首先重新创建它。所以不应该有伪代码、拼写错误、不相关的错误或未声明的类型或值。
-
对象类型名称通常以 UpperPascalCase 书写,以区别于值名称和原始类型;请将
productsListFromOrder更改为ProductsListFromOrder,以免分散您对问题的注意力。
标签: angular typescript