当前位置: 首页 > 知识库问答 >
问题:

即使未导入typescript声明文件,也会对其进行处理

湛玄裳
2023-03-14

我试图理解声明合并的行为。我创建了一个声明文件,它重新声明了模块的一个函数接口。npm模块“模式验证器”带有自己的类型。

我仅将此模块用作示例来演示行为。这个问题与schemavalidator模块无关。

我注意到,即使我没有导入声明文件,typescript仍然使用它。

我试图做的是,仅当我使用import语句导入自定义声明文件时才使用它。

这是我的2个文件

首先是我的自定义声明文件。在这里,我首先从npm模块jsonschema重新导出所有内容。其次,我只重新定义了一个函数接口。

所以我很清楚我的自定义声明是用mytypes声明的。即使文件类型为MyType,T也由typescript处理。我的程序中没有导入ts。

这不是我想要实现的。我希望只有当mytypes在schemavalidator文件中使用import语句导入时,才重新定义定义,在所有其他文件中,它应该使用npm模块附带的定义。

有可能吗?导入“/mytypes'

共有1个答案

闻人博
2023-03-14

声明文件可以包含关键字declare,这意味着它是全局声明的。在整个项目中,该模块是可访问的。

替换此:

declare module

有了这个:

export module

声明在非模块项目中使用,例如在浏览器(Babel编译器)或带有TS的JS的一些其他实现中。

我不能说使用declare是坏的或好的做法。人们也使用这个:

export declare module "myModule" {
  export const constant = "I am global and I can be part of import";
}

示例:使用自己的LIB创建在线编码操场。

解决方案:声明

示例:许多平台的开源项目。

解决方案:导出声明

示例:创建个人或生产使用的TypeScript React应用程序

解决方案:导出

有关更多信息,请参阅TypeScript文档。

 类似资料:
  • 主要内容:CalcThirdPartyJsLib.js 文件代码:,Calc.d.ts 文件代码:,CalcTest.ts 文件代码:,CalcTest.js 文件代码:,实例TypeScript 作为 JavaScript 的超集,在开发过程中不可避免要引用其他第三方的 JavaScript 的库。虽然通过直接引用可以调用库的类和方法,但是却无法使用TypeScript 诸如类型检查等特性功能。为了解决这个问题,需要将这些库里的函数和方法体去掉后只保留导出类型声明,而产生了一个描述 JavaS

  • 我得到“只有void函数可以用'new'关键字调用”。我知道关键字在声明文件中是有效的,例如: 这只是导出一个类型,正如编译器所说:“只引用一个类型,但在这里被用作值”。 我不能在这里使用类,因为API可以通过来自其他文件的插件进行扩展,类型声明合并在类上不起作用(我希望其他文件添加的方法也能够通过它们自己的键入文件进行键入)。 我不知所措-有什么主意吗?

  • 10.4. 导入声明 可以在一个Go语言源文件包声明语句之后,其它非导入声明语句之前,包含零到多个导入包声明语句。每个导入声明可以单独指定一个导入路径,也可以通过圆括号同时导入多个导入路径。下面两个导入形式是等价的,但是第二种形式更为常见。 import "fmt" import "os" import ( "fmt" "os" ) 导入的包之间可以通过添加空行来分组;通常将来

  • 我的TypeScript项目中有一个声明文件,如下所示: 这很好用,我可以在项目中的任何地方使用这个名称空间,而无需导入它。 我现在需要从第三方模块导入一个类型并在我的环境声明中使用它: 编译器现在抱怨它找不到名称空间“MyApp”,可能是因为导入阻止了它处于环境中。 是否有一些简单的方法可以在使用第三方类型的同时保留声明的环境性?

  • 我想在我的基于打字稿的项目中,在它们自己的文件中定义几个接口,我将从它们中实现用于生产的类以及用于测试的模拟。但是,我不知道正确的语法是什么。我找到了很多关于声明接口和实现它们的教程,但是它们都在同一个文件中实现了接口和派生类,这不是很真实。导出和导入接口的正确方法是什么?

  • 问题内容: 我有一个具有2个服务的应用程序: 和 在文件中有声明。问题是,当我的应用程序进程被迫自行关闭时,服务也会被杀死。 我希望他们不要被杀死。我听说过该类的标志,但是无法覆盖这些服务中的方法以返回此标志… 问题答案: 为了回答评论,我没有找到解决问题的任何“方法”,因为这不是 问题 。如果用户想要关闭我的应用程序,则他有权。 由于我的方法属于我的应用程序,因此如果用户强行关闭该应用程序,则该