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

是否正在隔离在具有非重复名称的对象属性上声明的接口的内部类型?

  •  1
  • fraxture  · 技术社区  · 8 月前

    @serverless/typescript包是一个类型AWS,它定义了您将放置在serverless.ts文件中的无服务器配置对象。在该对象中有一个类型化的接口 functions Lambdas的配置。我只想提取那个配置,不幸的是,它没有在这个库中作为特定类型导出。

    AWS类型的函数如下所示

    interface AWS {
      ...
      functions?: {
        [k: string]: { ...complex stuff in here... }
      }
    }
    

    我要提取的接口是的类型 [k: string] ,但我找不到任何方法来指代那种类型的片段。

    换句话说:

    type AwsLambdaConfig = AWS['functions'][<what goes here>]
    

    有什么方法可以表达我想要提取的路径吗?

    1 回复  |  直到 8 月前
        1
  •  1
  •   T.J. Crowder    8 月前

    问题是 AWS["functions"] 是可选的,因此您必须筛选出可选性,然后才能通过访问其索引签名的值类型 [string] 最后。我们可以通过 Exclude 所以

    type AwsLambdaConfig = Exclude<AWS["functions"], undefined>[string];
    

    Playground