首先,“隐式导入”不是官方术语。
这就是我所说的“隐式导入”。
我有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文件尽可能完整。
答案 0 :(得分:2)
首先,“隐式导入”不是官方术语。
您要查找的术语是global module
。无论您使用的是哪种angular
类型定义,都定义了 global angular
,因此您可以使用此 global 而不导入它。
如果类型定义定义了一个全局...而您使用了该类型定义(我假设您必须这样做)...您将获得一个全局。没有两种解决方法。
答案 1 :(得分:0)
您遇到了this TypeScript issue:angular
之类的UMD全局变量甚至可以在模块中的类型位置中使用。赖安·卡瓦诺(Ryan Cavanaugh)声称TypeScript可以按预期工作,但是我同意该问题的报道,认为这种行为毫无道理。