Javascript/TypeScript - 我可以从数组中添加 class 属性吗?

Javascript/TypeScript - Can I add class properties from an array?

提前感谢您的帮助。我在 TypeScript 工作,我假设任何 JS 解决方案也适用。我想做这样的事情:

class ExcelData {
  'Id 1': items[0].id,
  'Quantity 1': items[0].quantity,
  'Id 2': items[1].id,
  'Quantity 2': items[1].quantity
  //...
  'Id 40': items[39].id,
  'Quantity 40': items[39].quantity,
}

我正在尝试将它与 'xlsx' 模块一起使用,以将项目数据导出到 Excel sheet。这个模块必须是一个class,而不是几个数组。我可以手动输入它,但每个项目都有 7 个属性,这将是非常难看的代码。也有可能稍后要求我添加更多项目。 如果它是 Python,我可以做这样的事情 bc classes 和字典是不同的东西:

excel_data = {}
for i in range (40):
  excel_data['Id '+ str(i)] = items[i].id
  excel_data['Quantity '+ str(i)] = items[i].quantity

什么是 Typescript 替代品?

谢谢!

您可能正在寻找 index-signatures。在 JavaScript/Typescript 中,对象与 Python 字典相比比 class 更具可比性,对于此类数据存储,我会推荐它们。

您可以创建所需的数据存储并访问其属性,如下所示:

interface ExcelData {
    [property: string]: string | number | undefined;
}

const data: ExcelData = {};

data.id1 = "123-420";
data.quantity1 = 69;

虽然想要 "Quantity-*" 作为 属性 似乎很奇怪。使用 id 查找和设置数量的结构如下所示:

interface ExcelData {
    [id: string]: number | undefined;
}

const data: ExcelData = {};

data.someId = 69;

最后,您 可以 像这样用 class 做您想做的事:

class MyClass {
    [property: string]: string | number | undefined;
}

const myInstance = new MyClass();

myInstance.id1 = "123-420";
myInstance.quantity1 = 69;