我想指定该函数将对象数组作为参数,但是我没有为该对象定义特定类型(某种“匿名类型”)
bagTotal = (products) => {
// function does stuff
}
我知道我可以这样做:
bagTotal = (products: any[]) => {
// function does stuff
}
但是,这比我想要的放松了一点:严格输入我的打字稿。
products
是一系列外观相同的对象,例如所有对象都有名称,价格,描述。
我该怎么声明?
我想做类似的事情
bagTotal = (products: [{name: string, price: number, description: string}]) => {
// function does stuff
}
但这是不对的。我该如何声明?
答案 0 :(得分:3)
您快到了,括号的位置是错误的:
{name: string, price: number, description: string}[]
您拥有它的方式并不完全错误,但这意味着其他事情:它表示一个数组,其中只有一个这种类型的项。
我还建议将其提取到接口中,这将使类型可重用,并且使内容更易于阅读:
interface Product {
name: string;
price: number;
description: string;
}
const products: Product[];
答案 1 :(得分:1)
我认为您必须声明“ Product”类,以便可以这样声明Product数组:
products: Product[];
并将其作为这样的参数传递:
bagTotal = (products: Product[]) => {
// function does stuff
}
要拥有该类,您可以使用以下代码创建一个新的.ts文件:
export class Product {
name: String;
price: Number;
description: String;
}
我希望能有所帮助!
谢谢。
答案 2 :(得分:0)
如果您要声明特定对象的数组,并想为对象中的变量指定类型,我将为该对象创建一个类,如下所示:
class Item(){
name: string;
description: string;
etc: any
constructor() {
this.name;
this.description;
this.etc;
}}
然后您可以将数组指定为项目对象的数组:
itemArray: Array<Item>;
答案 3 :(得分:0)
这是使用 generic array type - Array<elemType>
bagTotal = (products: Array<{name: string, price: number, description: string}>) => {
// function does stuff
}