Reputation: 2254
First of all, 'implicit import' is not a official term.
Here's what I called 'implicit import' thing.
I have 2 ts files:
file1: app.ts
import * as angular from 'angular'; // (*)
import component from './component';
file2: component.ts
const component : angular.IComponentOptions = {
templateUrl: 'component.template.html'
};
export default component;
Here, in component.ts, even though the angular
is not imported, typescript compiler never shows any error. If I remove (*)
line in app.ts file, then typescript compiler complains that there's no angular namespace, so I thought that modules imported in app.ts are also implicitly imported in component.ts when app.ts imports component.ts. That's why I call this behavior 'implicit import'.(Please let me know the official term for this behavior if exists)
How to disable this behavior? I want to make each ts file as complete one as possible.
Upvotes: 4
Views: 2684
Reputation: 30879
You've run into this TypeScript issue: UMD globals such as angular
can be used in type positions even from a module. Ryan Cavanaugh claimed TypeScript was working as intended, but I agree with the reporter of that issue that the behavior makes no sense.
Upvotes: 1
Reputation: 276239
First of all, 'implicit import' is not a official term.
The term you are looking for is global module
. Whichever type definition of angular
you are using defined a global angular
and therefore you can use this global without importing it.
If a type definition defines a global ... and you use that type definition (which I am assuming you have to) ... you get a global. No two ways around it sorry.
Upvotes: 3