我对angular还是很陌生,并且正在尝试为其他人的代码编写单元测试。 (他们不能打扰,现在他们已经去做更好的事情了。)
这是什么结构?
export interface SomeState {
services: { [lineItemNumber: string]: SomeService };
}
这是正在访问它的代码行。
const serviceTypeId = someState.services[id].serviceType.id;
它是从API加载的。我似乎无法弄清楚要尝试使用Google来发现哪种结构。我需要在单元测试中复制该结构,但无法弄清楚。
答案 0 :(得分:0)
如果对象要实现SomeState
接口,则只需要有一个名为services
的键,其值本身就是一个对象,其键是字符串,并且值的类型为{{1 }}
SomeService
答案 1 :(得分:0)
那是字典。结构是这样的:
{
'1': someService1,
'2': someservice2
}
someState.services ['1']返回someService1
答案 2 :(得分:0)
简而言之,这将服务属性的类型定义为键/值结构,键是string
和值SomeService
,其称为Indexable类型
示例IArray接口:
interface INameOfInterface {
[index: type]: type;
}
interface IArray {
[index: number]: any;
}
SomeState的示例
let i = 2;
let srv:SomeState = {
services:{
'key0' : new SomeService(),
'key1' : new SomeService(),
['key'+i] : new SomeService(), // this not related to type it just get the name dynamic
'anything': new SomeService()
....
}
}
答案 3 :(得分:-1)
经过大量挖掘和寻求帮助之后,我发现此结构利用了计算所得的属性名称,如下所述:
因此,这些计算出的属性名称是在运行时创建的属性。要初始化它们,请执行以下操作:
services: {[serviceId]: service}