Using Lodash in TypeScript with Typings and SystemJS

InstructorJohn Lindquist

Share this video with your friends

Send Tweet

One of the most confusing parts of getting started with TypeScript is figuring out how to use all the libraries that you know and love from JavaScript. This lesson walks you through including Lodash in your project, installing Lodash definition files, and then properly loading Lodash with SystemJS.

G Inc.
~ 8 years ago

Interestingly, I did not get any duplicate identifier errors in the compiler after installing lodash via typings. I see from your typings directory that you have browser, main, browser.d.ts, and main.d.ts folders and files. When I installed, I simply got a modules folder and an index.d.ts file that includes a ref path to lodash's index.d.ts file.

I'm guessing this is due to an update to typings. I see that they have updated from version 1.0.5 all the way to 1.3.0 in just the last two weeks. Funny to think that this video series is less than two weeks old yet something referenced in the video is already not the same 😄

Sequoia McDowell
~ 8 years ago

Interesting!

Incidentally, why did you (John) remove the main version & keep the browser version? If you're importing it es-module style, shouldn't you include the npm version & leave out browser version?

Saiful
~ 8 years ago

Why do you map the lodash to cdn when it's already installed into npm_modules? Isn't it supposed to be mapped to some files within npm_modules/lodash?

John Lindquistinstructor
~ 8 years ago

Yes, but I wanted to clearly mark the difference between installing definition files and mapping to source files. By mapping to a cdn, I was able to show how SystemJS would make the request to load the file even if it's a remote file.

How your production mapping looks (whether to your local node_modules then doing a build/bundle or through using other CDN resources) is a decision left to you.

John Lindquistinstructor
~ 8 years ago

I'm actually going to revisit this lesson and concept when TypeScript 2.0 final is released.

Couple notes: Typings directories have changed: https://github.com/typings/typings/blob/master/docs/faq.md#where-do-the-type-definitions-install

But also, TypeScript is going to allow you to install definition files from npm. Hopefully this will remove all the confusion: https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/

Omer Koren
~ 8 years ago

I'm getting a "Cannot find module 'lodash'" error when compiling. It is coming from the line: import * as _ from 'lodash'; Any idea why?

Bryan
~ 8 years ago

Funny, I'm getting the same issue. TypeScript is compiling fine, but SystemJS is complaining about finding lodash.

Bryan
~ 8 years ago

I realized that my syntax was off in the config for SystemJS. I had 'map' under 'packages', when it is supposed to be a sibling of 'packages' in the config. Not sure if you did the same thing or similar, but maybe that will help you.

technokon
~ 7 years ago

instead of using typings

npm install --save @types/lodash

http://stackoverflow.com/questions/34660265/importing-lodash-into-angular2-typescript-application/35820239

Sports Whispers
~ 7 years ago

So we have installed lodash locally and are now loading it from CDN... makes sense. :/

Yury
~ 7 years ago

Yeah. Typings package is deprecated! You should use

yarn add @types/{needed_package_name}!

Daniel Ram
~ 6 years ago

so much overhead....

Nazanin Delam
~ 6 years ago

It is not recommended to use non-primitive box-objects such as "String" as type. We should use "string". https://www.typescriptlang.org/docs/handbook/declaration-files/do-s-and-don-ts.html

Daniel Ram
~ 6 years ago

After deploying a typescript project to the web, the TSC compiler can hang on instances with low ram or CPU, do not use a t2.micro even for a demo project. Second, the error in the logs are totally cryptic after compilation. I recommend using something like Flow instead of typescript, so you can use types when you need and decide to compile your code into a readable form for 1st release.. It is hard to track bugs when the compilation is cryptic.

Andrew Davis
~ 6 years ago

I can't compile it if lodash is not installed. Got this message from tsc compiler

src/main.ts:3:20 - error TS2307: Cannot find module 'lodash'.