4

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.

2 Answers 2

3

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.

Sign up to request clarification or add additional context in comments.

Comments

1

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.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.