代码之家  ›  专栏  ›  技术社区  ›  Thom

这个结构是什么?我如何使用它?

  •  -1
  • Thom  · 技术社区  · 7 年前

    我对angular还是个新手,正在尝试为其他人的代码编写单元测试。(他们不必担心,现在他们已经去做更好的事情了。)

    这个结构是什么?

    export interface SomeState {
        services: { [lineItemNumber: string]: SomeService };
     }
    

    这是访问它的代码行。

     const serviceTypeId = someState.services[id].serviceType.id;
    

    它是从API加载的。我似乎不知道谷歌应该做些什么来发现这是什么样的结构。我需要在我的单元测试中复制这个结构,但我无法理解它。

    4 回复  |  直到 7 年前
        1
  •  1
  •   bugs    7 年前

    如果一个对象想要实现 SomeState 接口它只需要有一个名为 services SomeService


    const someService: SomeService = .... // value of type SomeService
    
    const valid: SomeState = {
      services: {
        a: someService
      }
    }
    
    const invalid: SomeState = {
      services: {
        b: 123 // Error -> the value of 'b' must be of type SomeService
      }
    }
    
        2
  •  0
  •   behruz    7 年前

    那是一本字典。结构是这样的:

    {
    '1': someService1,
    '2': someservice2
    }
    

        3
  •  0
  •   Thom    7 年前

    经过大量挖掘和寻求帮助,我发现此结构使用计算属性名称,如下所述:

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names

    因此,这些计算属性名称是在运行时创建的属性。要初始化它们,请执行以下操作:

    services: {[serviceId]: service}
    
    推荐文章