如何禁用打字稿中的隐式导入

时间:2018-09-11 01:19:13

标签: typescript import module

首先,“隐式导入”不是官方术语。

这就是我所说的“隐式导入”。

我有2个ts文件:

文件1:app.ts

Active(file)

文件2:component.ts

import * as angular from 'angular'; // (*)
import component from './component';

在这里,即使未导入const component : angular.IComponentOptions = { templateUrl: 'component.template.html' }; export default component; ,在component.ts中,打字稿编译器也不会显示任何错误。如果我删除了app.ts文件中的angular行,那么打字稿编译器会抱怨说没有角度命名空间,因此我认为当app.ts导入组件时,在app.ts中导入的模块也隐式地导入了component.ts中。 ts。这就是为什么我将此行为称为“隐式导入”。(如果存在,请让我知道此行为的正式用语)

如何禁用此行为?我想使每个ts文件尽可能完整。

2 个答案:

答案 0 :(得分:2)

  

首先,“隐式导入”不是官方术语。

您要查找的术语是global module。无论您使用的是哪种angular类型定义,都定义了 global angular,因此您可以使用此 global 而不导入它。

如果类型定义定义了一个全局...而您使用了该类型定义(我假设您必须这样做)...您将获得一个全局。没有两种解决方法。

答案 1 :(得分:0)

您遇到了this TypeScript issueangular之类的UMD全局变量甚至可以在模块中的类型位置中使用。赖安·卡瓦诺(Ryan Cavanaugh)声称TypeScript可以按预期工作,但是我同意该问题的报道,认为这种行为毫无道理。