AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 76922461
Accepted
TalesMGodois
TalesMGodois
Asked: 2023-08-17 22:26:28 +0800 CST2023-08-17 22:26:28 +0800 CST 2023-08-17 22:26:28 +0800 CST

如何获取文件的打字稿元数据?

  • 772

我使用无服务器框架创建了这些无服务器微服务。一切工作正常,但有一些与无服务器无关的恼人情况。

当我的一些 lambda 需要调用另一个 lambda 时,我有一个辅助方法可以帮助我创建 lambda 调用,为了一切正常,我需要传递输入和输出类型、lambda 名称和服务名称。通过以下结构,我可以在任何我想要的地方调用这个 lambda,并进行我需要的类型检查。我将称以下为客户

export const createWallet = getLambda<CreateWalletEvent, Wallet>({
    lambdaShortName: 'createWallet',
    serviceName: 'bolico-wallets-svc'
});


export const populateWallets = getLambda<PopulateWalletsEvent, PopulateResultReponse>({
    lambdaShortName: 'populateWallets',
    serviceName: 'bolico-wallets-svc'
});

这种格式工作正常,但有一个例外。我需要为每个微服务重新创建所有类型。为每个服务创建这些 lambda 调用非常烦人,我需要导出类型,并getLambda<T,R>手动为每个新 lambda 填充一个新的。所以我想创建一个脚本来生成我需要的文件。

我的所有 lambda 函数如下所示,我将调用此处理程序:

export const handler = async (event: CreateWalletInput): Promise<Wallet> => {
    return walletService.createWallet(event);
}

所以,我需要做的是根据具有正确类型的处理程序生成一个客户端

是否可以读取该处理程序或任何打字稿文件并获取某种元数据?

例如,对于处理程序代码,我想要某种数组:

[
    {
        type: "function",
        name: "handler",
        input: ["CreateWalletInput"],
        output: ["Promise<Wallet>"],
        exported: true,
    }
]

有谁知道有什么库或工具可以获取此类元数据?此时,我只能考虑读取文件并尝试找到一些正则表达式来获取我需要的内容。

typescript
  • 2 2 个回答
  • 34 Views

2 个回答

  • Voted
  1. Best Answer
    so_close
    2023-08-17T22:48:37+08:002023-08-17T22:48:37+08:00

    也许ts-morph会有帮助?看起来它们部分支持了您所需要的功能,例如https://ts-morph.com/manipulation/structs。我不是专家 - 您需要阅读他们的自述文件和文档,看看它是否是满足您需求的正确工具;)

    • 1
  2. Pa Ye
    2023-08-17T22:52:40+08:002023-08-17T22:52:40+08:00

    您的情况似乎需要一个可以以编程方式从源代码中提取某些标记的工具。也许看看ts-ast-viewer.comts-morph上的幕后繁重工作:

    在此输入图像描述

    希望有帮助。

    • 1

相关问题

  • 如何将数组转换为像这样的对象返回 const 类型?

  • “没有重载匹配”我的 Object.assign() 调用;我该如何修复它?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    使用 <font color="#xxx"> 突出显示 html 中的代码

    • 2 个回答
  • Marko Smith

    为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类?

    • 1 个回答
  • Marko Smith

    您可以使用花括号初始化列表作为(默认)模板参数吗?

    • 2 个回答
  • Marko Smith

    为什么列表推导式在内部创建一个函数?

    • 1 个回答
  • Marko Smith

    我正在尝试仅使用海龟随机和数学模块来制作吃豆人游戏

    • 1 个回答
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 个回答
  • Marko Smith

    为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)?

    • 4 个回答
  • Marko Smith

    为什么库中不调用全局变量的构造函数?

    • 1 个回答
  • Marko Smith

    std::common_reference_with 在元组上的行为不一致。哪个是对的?

    • 1 个回答
  • Marko Smith

    C++17 中 std::byte 只能按位运算?

    • 1 个回答
  • Martin Hope
    fbrereto 为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 您可以使用花括号初始化列表作为(默认)模板参数吗? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi 为什么列表推导式在内部创建一个函数? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A fmt 格式 %H:%M:%S 不带小数 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python C++20 的 std::views::filter 未正确过滤视图 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute 为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa 为什么库中不调用全局变量的构造函数? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis std::common_reference_with 在元组上的行为不一致。哪个是对的? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev 为什么编译器在这里错过矢量化? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan C++17 中 std::byte 只能按位运算? 2023-08-17 17:13:58 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve