首页 > 解决方案 > 如何在打字稿中禁用隐式导入

问题描述

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

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

我有 2 个 ts 文件:

文件 1:app.ts

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

文件2:组件.ts

const component : angular.IComponentOptions = {
    templateUrl: 'component.template.html'
};

export default component;

在这里,在 component.ts 中,即使angular没有导入,打字稿编译器也不会显示任何错误。如果我删除(*)app.ts 文件中的行,那么 typescript 编译器会抱怨没有 angular 命名空间,所以我认为 app.ts 中导入的模块也会在 app.ts 导入 component.ts 时隐式导入到 component.ts 中。这就是为什么我将此行为称为“隐式导入”。(如果存在,请告诉我此行为的官方术语)

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

标签: typescriptimportmodule

解决方案


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

您要查找的术语是global module. angular无论您使用哪种类型定义都定义了一个全局 angular变量,因此您可以在不导入它的情况下使用这个全局变量。

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


推荐阅读