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;
提前感谢您的帮助。我在 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;