【问题标题】:TypeScript: Getting the type signature of values in a dynamically keyed objectTypeScript:获取动态键控对象中值的类型签名
【发布时间】:2021-05-27 16:21:39
【问题描述】:

我想在我从库中导入但不控制的类型对象中引用值类型。

我正在使用无服务器 TypeScript 包,它提供了一个名为 AWS 的类型,如下所示:


{
  ...
  functions?: {
    [k: string]: {
      name: string;
      ...
    }
  }
}

我知道可以用AWS["functions"]引用整个函数子对象的类型

我的问题是,如何以编程方式询问该子对象的 的子类型?

请参阅下面的代码,其中“TYPE_HERE”指示我要在哪里填写类型。

import type { AWS } from "@serverless/typescript";

export default (): TYPE_HERE => ({
  name: "",
  ...
});

当它作为动态键的 value 属性存在时,我如何使用根类型甚至类型 AWS["functions"] 来声明类型?

【问题讨论】:

    标签: javascript typescript types aws-serverless


    【解决方案1】:

    这应该可行:

    interface AWS {
      functions?: {
        [k: string]: {
          name: string;
        }
      }
    }
    
    type FnType 
      = NonNullable<AWS["functions"]> extends { [K: string]: infer R } ? R : never
    
    const d = (): FnType => ({
      name: "",
      dd: '', // error
    });
    

    TS playground

    【讨论】:

      猜你喜欢
      • 2019-11-23
      • 2022-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 2019-06-28
      相关资源
      最近更新 更多