1
votes

I'm assigned a task to update our angularJs project to TypeScript 2

We currently use requirejs (AMD) to shim libraries, then use

import 'angular'; import 'lodash';

which is an ES6 module loading syntax as far as I can understand. We declare a main Application module and import libraries in it, then as we import the Application module

import 'Application';

which is also shimed by requirejs, we automatically get all the list of imported libraries of Application as we import it.


I actually updated the project SUCCESSFULLY to TypeScript 2!!!

However, the problem arises when I try to use @types to include TypeScript Declaration files.

There is not a single complete reference on how to do the job!

****** The Question! ******

When I tried to use @types/lodash I lost intellisense for _ (lodash) in all existing files.

When I attempt to

import * as _ from 'lodash';

I'm then faced with a different error:

Build:Module augmentation cannot introduce new names in the top level scope.

My understanding is that the .d.ts files export UMD modules. But how can I reference the @types in my Visual Studio 2015?

Please help! And Thanks.

1
Sorry for your experience, but I'm just happy knowing that I'm not the only person who is being driven insane (almost literally in my case, due to lack of sleep and full days I've spent on this!). I feel like it'll be really cool when it works! - Adam Plocher

1 Answers

0
votes

requireJS doen NOT handle UMD (Universal Module Loading) gracefully. All @types libraries are UMD libraries.

We had to move to WebPack in order to get @types libraries to load properly.

Most importantly, we had done so as a step closer to upgrading to Angular 5, which cannot be accessed by requireJS AMD, since it was written in TypeScript as a UMD from the start.