gpt4 book ai didi

typescript - Typescript 接口(interface)范围如何工作?如何使接口(interface)全局化?

转载 作者:行者123 更新时间:2023-12-04 04:08:26 25 4
gpt4 key购买 nike

我是 Typescript 和 Deno 的新用户,我不太了解接口(interface)范围的工作原理。

我有一个树层应用程序:

第一层( App.ts )是我的应用程序,这是我的应用程序的核心逻辑部分所在的地方。这部分可以是任何需要引用第二层(API.ts)的文件。

第二层( API.ts )是我可以与任何远程 API(如 Facebook、stripe、Google API)进行通信的入口点

第三层是一堆.ts文件。第二层(API.ts)可以与它们中的每一个进行通信。每个文件都处理特定 API 的非常精确的部分。例如,我有一个 FB_page.ts 处理 Facebook API 中负责页面的部分,另一个文件 STRP_订阅处理负责订阅等的 Stripe API 部分。

我的问题是

我有很多接口(interface)来处理 API 调用可以输入或输出的每种类型的参数、每个错误和每个响应。我在应用程序的每一层都需要这些接口(interface)。

如果我可以将特定 API 部分的接口(interface)放入负责它的文件中,那将是非常酷的。例如,如果我需要 Facebook 页面 API 的多个接口(interface),我想将 then 放入 FB_page.ts 文件。

但是必须导入 很繁琐FB_page.ts 如果我在我的应用程序的第一层需要它们,请归档 应用程序 像这样 :import {IPost, IPost_Error, IPost_Response} from '../lib/FB_page.ts';
所以我把它们放在 .d.ts 文件中,但它们似乎也不是全局的?

我怎样才能访问我的接口(interface),而不必在我的应用程序的任何地方都导入它们?

感谢您的帮助。

最佳答案

Deno 中的几乎所有东西都是一个模块。如果您提供具有全局类型的非模块/脚本,则不会找到它。此外,Deno 无法处理 .d.ts文件扩展名,除了一些带有 compiler hints 的地方.
你可以做什么

  • 将包含接口(interface)的文件重命名为 .ts .
  • 将全局类型放入模块中(带有 import/export 的文件)
  • 确保导入此模块,以便 Deno CLI 在编译时可以找到它

  • 请注意, deno使用其自己的集成 TS 编译器,不同于您的 IDE(VS Code 和其他)之一。因此,显示没有类型错误的 IDE 并不意味着 deno rundeno cache可以编译源码。
    示例代码
    // Put following code inside one of your used modules
    declare global {
    interface IPost {
    foo: string;
    }
    }

    // IPost will be available globally without import
    const post: IPost = { foo: "bar" }
    如果要将全局类型与其他代码分开,可以使用副作用导入:
    import "./lib/global.ts";
    const post: IPost = { foo: "bar" };
    全局.ts:
    export {}; // use some export to mark file as module
    declare global {
    interface IPost {
    foo: string
    }
    }

    关于typescript - Typescript 接口(interface)范围如何工作?如何使接口(interface)全局化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62152444/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com