Typescript接口作用域如何工作?如何使接口具有全局性?

特洛尔·阿隆布里亚

我是Typescript和Deno的新用户,我不太了解接口范围是如何工作的。

我有一个树层应用程序:

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

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

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

我的问题是

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

如果我可以将特定API部分的接口放在负责该文件的文件中,那将非常酷。例如,如果我需要用于Facebook页面API的多个接口,则要将其放在FB_page.ts文件中。

但是,如果我在应用程序App.ts的第一层中需要这样的文件,则必须导入FB_page.ts文件是很麻烦的import {IPost, IPost_Error, IPost_Response} from '../lib/FB_page.ts';

所以我将它们放在.d.ts文件中,但它们似乎也不是全局的?

我如何可以访问接口而不必将其导入应用程序中的所有位置?

感谢您的帮助。

福特04

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

你可以做什么

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

请注意,它deno使用了自己的集成TS编译器,与您的IDE(VS Code和其他IDE)之一不同。所以,没有表现出类型错误的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" };
global.ts:
export {}; // use some export to mark file as module
declare global {
  interface IPost {
    foo: string
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使服务在Angular库中具有全局性?

Kotlin扩展功能-如何使其具有全局性?

扩展接口与其他方法使其具有全局性

如何使用ember使节点模块具有全局性?

QT-如何使此阵列在GUI上具有全局性?

如何声明具有可变数量属性的TypeScript接口?

如何从具有可选字段的现有接口中创建狭窄的Typescript接口?

如何使用嵌套接口作用域TypeScript泛型类型

可比接口如何工作?

回送接口如何工作

如何将具有自定义类型的属性添加到 Node 的全局接口

如何防止遮盖全局接口?

如何定义具有Key String索引但具有特定类型的已知键的TypeScript接口?

具有属性的TypeScript接口

TypeScript:如何创建类型或接口,该类型或接口是具有n个键之一或字符串的对象?

将宏更新为在所有工作表中都相同(或使代码更具全局性?)

在 F# 中,如何实现具有父接口和祖父接口的接口?

如何为包含具有类型安全性的对象数组的 var 创建接口?

如何在SilverStripe中定义具有全局作用域的数组?

TypeScript-如何为具有未知键的深度变化的对象映射只读接口?

如何在TypeScript中使用具有接口联合类型的实例?

如何在TypeScript中定义不具有某些属性的接口?

如何在TypeScript中为具有可变键控子对象的深层对象定义接口

Typescript:如何从联合类型中排除仅具有可选属性的接口

如何使用 TypeScript 确保两个对象具有相同的结构(无接口)?

接口为类型的数组(具有接口的多态性)

Go的堆接口如何工作?

COM 接口指针是如何工作的?

与构造签名的接口如何工作?