How should I use @types with TypeScript 2

gilamran picture gilamran · Jul 18, 2016 · Viewed 44.8k times · Source

So far we are used to tsd or (The better version of it) typings

But now that TypeScript 2 offers the new @types feature, how should I convert my current project to work with @types?

I have tsd.json (typings.json is some cases) with all the dependencies, what are the steps to do the move to TypeScript 2?

What are the new best practices? Does @types support specific versions?

Answer

David Sherret picture David Sherret · Jul 18, 2016

It's very simple. Just install the definitions that you need via npm.

For example if you need lodash you can do:

npm install --save @types/lodash

Once it's installed you can use it right away in your project. Typescript will resolve the typings for the installed @types package from the node_modules/@types folder by default. There's no need for a tsd.json or typings.json file anymore.

Additional points:

  • The major and minor version of the @types package in npm should correspond with the package version.
  • You can search for types here: http://microsoft.github.io/TypeSearch/
  • Read about typeRoots and types here. Specifically pay attention to these two points:
    • If typeRoots is specified in tsconfig.json, then only specified folders will be used for the type roots. That will exclude ./npm_modules/@types/ unless you specify it.
    • If types is specified in tsconfig.json, then only the packages specified will be included.

Read more in the blog post here.