How do I decide whether @types/* goes into `dependencies` or `devDependencies`?

Let’s say you’re developing a package “A” that have @types/some-module package in devDependencies. For some reason you’re exporting the type from @types/some-module:

import { SomeType } from 'some-module';

export default class APackageClass {
  constructor(private config: SomeType) {
    // …       
  }
}

Right now TypeScript consumers of package “A” are unable to guess what SomeType is, since devDependencies of package “A” are not installed.

In that particular case you need to place @types/* package with regular dependencies. For other cases devDependencies are good enough.

Leave a Comment