TypeScript模型类静态数据添加咨询:模型正确性及数据添加方法
问题解答
模型类是否适配你的数据?
结构上完全适配:你的数据是「字母区间 + 对应行业列表」的分组结构,模型类的alphaIndex对应字母区间(如A-E),industries数组对应分组下的行业名称,完全匹配数据层级。但你的模型类存在两处小问题:
- 构造函数中
industries的类型写成了[](空元组类型),和类属性的Array<string>不匹配,应改为string[]或Array<string>。 - 类属性的初始化可以结合构造函数简化,避免冗余代码。
如何正确添加数据?
报错核心是构造函数需要两个独立参数,但你实例化时传了一个对象参数,类型不匹配导致报错。有两种解决方式:
方式一:修改构造函数,支持对象参数(推荐,符合你当前调用习惯)
调整构造函数接收对象参数,同时修正类型定义:
export class Industries { alphaIndex: string; industries: string[]; constructor({ alphaIndex, industries }: { alphaIndex: string, industries: string[] }) { this.alphaIndex = alphaIndex; this.industries = industries; } }
此时你原来的实例化代码可正常运行:
let record = new Industries({alphaIndex: 'A-E', industries: ['Automative','Chemicals','Energy']}); this.industries.push(record); // 其他分组数据按同样方式添加 let record2 = new Industries({alphaIndex: 'F-O', industries: ['Forest Product','Industrial','Mining']}); this.industries.push(record2);
方式二:保持构造函数参数结构,修改实例化代码
如果不想改动构造函数,只需把实例化时的对象拆成两个独立参数传入:
// 修正后的实例化代码 let record = new Industries('A-E', ['Automative','Chemicals','Energy']); this.industries.push(record);
额外优化:使用参数属性简化模型类
TypeScript支持用参数属性直接在构造函数中定义类属性,省去手动赋值步骤,代码更简洁:
export class Industries { constructor( public alphaIndex: string, public industries: string[] ) {} }
这个版本的类和之前功能完全一致,更符合TypeScript最佳实践。
内容的提问来源于stack exchange,提问作者Arvind Chourasiya
相关产品推荐
相关产品推荐

