【问题标题】:How can I declare global Error type in typescript NodeJs Architect project?如何在打字稿 NodeJs Architect 项目中声明全局错误类型?
【发布时间】:2022-12-21 07:13:45
【问题描述】:

语境

您好,我有一个用于构建和部署 lambda 函数的 NodeJs+Ts+Architect 设置。 Architect 使用 typescript plugin 编译 typescript。我正在尝试使用 Error 类来抛出错误。

但是,Typescript 正在从中获取错误类型 /Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/lib.es5.d.ts

在下图中,请注意构造函数签名只接受message 字段。而且错误接口也没有options对象。请 查看Browser Error ClassNodeJs Error Class 以查看签名。

节点错误具有以下构造函数签名和错误接口。

问题

  • 尝试使用节点错误的构造函数签名时出现 TS 错误,因为 Typescript 正在从 lib.es5.d.ts 读取错误类型,它只接受 1 个参数

我知道的可能解决方案

  • 声明全局错误类型(此处需要帮助。由于 Architect 正在使用其插件编译 TS,因此我无法声明和覆盖错误接口)
  • 使用您自己的错误类

我希望这个问题是有道理的。如果有更好的方法来解决这个问题,我将不胜感激,但我没有对 Architect+Ts+NodeJs 进行充分的讨论。

【问题讨论】:

    标签: node.js typescript lambda error-handling architect


    【解决方案1】:

    cause选项是在ES2022中引入的。您至少需要为您的 lib 类型使用该版本。

    tsconfig.json 中的 lib 版本更改为:

    "compilerOptions": { "lib": ["es2022"] }
    

    【讨论】:

    • 谢谢。这是有道理的。但是,我在 tsconfig 中更改了 lib 版本,我也可以在同一目录中看到 lib.es2022.d.ts 文件。但是当我运行 tsc file.ts 时,它仍然会出现同样的错误。如果我正在运行 tsc global,是否还需要引用此配置文件?
    • @alchemist95 - 您可以尝试手动指定 tsconfig.sontsc --project ./your_path/tsconfig.json。也许也尝试将目标版本更改为es2022
    猜你喜欢
    • 2017-10-22
    • 2021-02-17
    • 2016-03-27
    • 1970-01-01
    • 2022-11-02
    • 2019-05-05
    • 2019-02-16
    • 2020-06-25
    • 2017-08-16
    相关资源
    最近更新 更多